Is there a specific way to handle failure in an AsyncTask? As far as I can tell the only way is with the return value of task. I’d like to be able to provide more details on the failure if possible, and null isn’t very verbose.
Ideally it would provide an onError handler, but I don’t think it has one.
class DownloadAsyncTask extends AsyncTask<String, Void, String> {
/** this would be cool if it existed */
@Override
protected void onError(Exception ex) {
...
}
@Override
protected String doInBackground(String... params) {
try {
... download ...
} catch (IOException e) {
setError(e); // maybe like this?
}
}
}
You can simply save the exception in a field and check it in
onPostExecute()(to ensure that any error handling code is run on the UI thread). Something like:}