public Void call() throws Exception { try { doPreExecute(); doSuccess(doCall()); } catch (final Exception e) { try { doException(e); } catch (Exception f) { // logged but ignored Ln.e(f); } } catch (final Throwable t) { try { doThrowable(t); } catch (Exception f) { // logged but ignored Ln.e(f); } } finally { doFinally(); } return null; }
protected void onThrowable(Throwable t) throws RuntimeException { Ln.e(t, "Throwable caught during background processing"); }