程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何重新抛出捕获的异常

发布于2023-11-26 20:53     阅读(277)     评论(0)     点赞(12)     收藏(5)


我遇到的情况是 Activity 调用 Manager 类,而 Manager 类又调用提供程序。

Activity -> Manager(带有 asyncTask 的方法)-> Provider

在提供者上我抛出自定义异常

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 块)。

我应该如何将捕获的异常发送回活动?


解决方案


如果您使用AsyncTask而不是常规线程,您可以简单地构造您的逻辑,如果该方法doInBackground返回一些空/零值,您onPostExecute将简单地向用户显示所需的错误对话框。如果您无法使用,那么您可以在 UI 线程中AsyncTask创建一个处理程序,然后当您捕获异常时,通过处理程序向您的 UI 线程发送一条消息,然后您可以在其中显示错误对话框。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/684993/4618392be5e050a613bb/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

12 0
收藏该文
已收藏

评论内容:(最多支持255个字符)