根据官方文档,AsyncTask#get()在线程任务中发生异常时抛出ExecutionException。如何通知当前的AsyncTask AsyncTask#doInBackground(Params...)方法中引发了异常?
答案 0 :(得分:0)
最好不要使用AsyncTask.get()
,因为get()
是同步的,所以你什么也得不到
答案 1 :(得分:0)
你不能。
由Future#get()
内部调用的AsyncTask#get()
方法抛出ExecutionException。
Futures允许在其执行的异步块中抛出异常。对Future#get()
的调用将抛出一个封装在ExecutionException中的异常。
AsyncTasks不允许在AsyncTask#doInBackground()
方法中抛出异常。因此,您不能使用此机制进行异常处理。这似乎是一个建筑设计决定。
声明:
您仍然可以在AsyncTask#doInBackground()
中抛出RuntimeExceptions,导致ExecutionException
上的相关AsyncTask#get()
...但您不应该这样做;)
注意:
您确定要调用AsyncTask#get()
并阻止调用线程吗?从main / ui线程调用它将导致用户界面在任务完成之前停止刷新。