package by.fksis.schedule.async.base; import android.content.Context; import by.fksis.schedule.L; public abstract class SafeProgressTask extends ProgressTask<Void, Exception> { public SafeProgressTask(Context context) { super(context); } @Override protected Exception doInBackground(Void... arg0) { try { process(); return null; } catch (Exception e) { L.d(this + " crashed: " + e); return e; } } public abstract void process() throws Exception; @Override protected void onPostExecute(Exception result) { super.onPostExecute(result); try { if (result == null) { onSuccess(); } else { onError(result); } } catch (Exception e) { e.printStackTrace(); } } public void onSuccess() { } public void onError(Exception error) { } }