我的情况是Activity调用调用provider的Manager类。
活动 - > Manager(使用asyncTask的方法) - >提供商
在提供者上我抛出自定义异常
try {
// here is code that may be exception
} catch (LoadingException e) {
DataNotAvailableException ex = new DataNotAvailableException();
ex.initCause(e);
throw ex;
}
我在Manager类
上处理此异常try {
//calling provider and catching exception
} catch (DataNotAvailableException e) {
//TODO rethrow exception to activity
}
但主要是我不能将异常抛回到处理UI的Activity的问题。在那里,我想向用户显示消息(对话框),该连接不可用。
如果我试图重新抛出异常,它会给我错误(说环绕try / catch块)。
我应该如何将捕获的异常发送回活动?
答案 0 :(得分:1)
如果你使用AsyncTask而不是常规线程,你可以简单地构造你的逻辑,如果doInBackground
方法返回一些零/零值,你的onPostExecute
就会简单向用户显示所需的错误对话框。如果您无法使用AsyncTask
,那么您可以在UI线程中创建Handler,然后当您捕获异常时,通过处理程序向您的UI线程发送消息,然后您可以在其中显示你的错误对话框。
答案 1 :(得分:0)
您可以尝试这样的事情
try
{
...
}
catch (Exception e)
{
throw new YourOwnException(e);
}
答案 2 :(得分:0)
抛出一个新的RuntimeException,并将捕获的异常作为参数。在编译时不检查RuntimeExceptions。
throw new RuntimeException(e);
答案 3 :(得分:0)
当您通过两种方式捕获异常时,您可以在主活动上执行某些方法来显示消息。