加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 捕获几个异常并重新抛出一般异常

发布时间:2020-12-15 00:58:21 所属栏目:Java 来源:网络整理
导读:我正在使用反射将一些数据添加到来自第三方库的类中的私有变量.一路上有大约四种不同的例外可以抛出;所有这些都与反思有关,而且所有这些都不太可能发生.我正在硬编码所涉及的类和变量的名称.我不太可能收到任何未找到的类或未找到字段的错误,除非该库有一天
我正在使用反射将一些数据添加到来自第三方库的类中的私有变量.一路上有大约四种不同的例外可以抛出;所有这些都与反思有关,而且所有这些都不太可能发生.我正在硬编码所涉及的类和变量的名称.我不太可能收到任何未找到的类或未找到字段的错误,除非该库有一天升级并且已经发生了显着变化.

我宁愿不为我的调用者声明所有这四个异常来处理.他可能永远不会见到他们.我想抓住所有这些并抛出另一个例外,说“发生了Java反射错误;可能是库已经以与此方法不兼容的方式升级和更改了.”是否存在我可以抛出的标准Java异常,它表示只是一般反射错误?我应该定义自己的吗?或者最好只声明这个方法可以抛出所有可能的反射异常?

解决方法

如果您从未期望它们发生,您可以将所有异常转换为AssertionError.
如果要处理特定异常,可以解包InvocationTargetException.
如果你想抛出方法引发的实际异常而不是InvocationTargetException,你可以使用这个技巧,但它可能比有用更令人困惑
} catch (InvocationTargetException e) {
    // Throw any exception in the current thread (even if it is a checked exception)
    Thread.currentThread().stop(e.getCause());
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读