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

java – 处理灾难性异常

发布时间:2020-12-15 01:01:26 所属栏目:Java 来源:网络整理
导读:我在C#入门书中读到,如果你不知道如何处理它,你不应该发现异常.在使用 Java编程时考虑到这些建议,我有时会发现我不知道如何处理异常,但我不得不抓住它或“渗透它”以避免编译错误.我宁愿不要在调用树的整个过程中使用throws子句混乱方法,所以我经常使用“转
我在C#入门书中读到,如果你不知道如何处理它,你不应该发现异常.在使用 Java编程时考虑到这些建议,我有时会发现我不知道如何处理异常,但我不得不抓住它或“渗透它”以避免编译错误.我宁愿不要在调用树的整个过程中使用throws子句混乱方法,所以我经常使用“转换”异常到RuntimeException,如下所示.将throws子句添加到许多方法中,对于没有真正“处理”(正确处理)的异常,这似乎是冗长和分散注意力的.是以下不好的风格,如果是这样,有什么更好的方法来处理这个?
try {
  thread.join();
}
catch (InterruptedException e) {
      Console.printwriter.format("%sn",e.printStackTrace());
  throw new RuntimeException();
}

编辑:除了杂乱之外,渗透异常还有另一个问题:在代码修改之后,你可能最终会得到一些不必要的抛出子句.我知道清除它们的唯一方法是通过反复试验:删除它们并查看编译器是否抱怨.显然,如果您想保持代码清洁,这很烦人.

解决方法

在已检查和未检查的异常之间的Java划分是 somewhat controversial.

如果您控制接口,则向签名添加throws子句通常是最好的方法.

如果您处于无法处理异常的情况,但由于检查了异常签名而不允许它冒泡,那么将异常包装到可以重新抛出的异常(通常是RuntimeException)是常见的做法.

在许多情况下,您可能希望使用另一个已检查的异常,例如IOException或SQLException.但这并不总是一种选择.

但在您的示例中,将原始异常包含为“原因”:

throw new RuntimeException(e);

这也可以消除对日志记录的需要(因为这也可以推迟到可以处理异常的人,并且所有信息仍然存在).

(编辑:李大同)

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

    推荐文章
      热点阅读