如何设置AsyncTask的get方法抛出的ExecutionException?

时间:2012-11-04 17:29:37

标签: android android-asynctask executionexception

根据官方文档,AsyncTask#get()在线程任务中发生异常时抛出ExecutionException。如何通知当前的AsyncTask AsyncTask#doInBackground(Params...)方法中引发了异常?

2 个答案:

答案 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线程调用它将导致用户界面在任务完成之前停止刷新。