根据官方文档,AsyncTask#get()在线程任务中发生异常时会抛出 ExecutionException。如何通知当前 AsyncTask 在AsyncTask#doInBackground(Params...)方法中引发了异常?
2 回答
0
最好不要使用AsyncTask.get(),因为get()是同步的,所以你什么也得不到
于 2012-11-04T17:43:20.490 回答
0
你不能。
Future#get()ExecutionException 由内部调用的方法引发AsyncTask#get()。
期货确实允许在其执行的异步块中抛出异常。调用Future#get()将抛出封装在 ExecutionException 中的此类异常。
然而,AsyncTasks 不允许在AsyncTask#doInBackground()方法中抛出异常。因此,您不能将此机制用于异常处理。这似乎是一个架构设计决策。
免责声明:
您可能仍然可以在您的 中抛出 RuntimeExceptions AsyncTask#doInBackground(),导致相关ExecutionException的AsyncTask#get()... 但您不应该;)
笔记:
您确定要调用AsyncTask#get()并阻止调用线程吗?从你的 main/ui 线程调用它会导致你的用户界面停止刷新,直到你的任务完成。
于 2012-11-04T18:45:00.543 回答