java – 处理灾难性异常

前端之家收集整理的这篇文章主要介绍了java – 处理灾难性异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在C#入门书中读到,如果你不知道如何处理它,你不应该发现异常.在使用 Java编程时考虑到这些建议,我有时会发现我不知道如何处理异常,但我不得不抓住它或“渗透它”以避免编译错误.我宁愿不要在调用树的整个过程中使用throws子句混乱方法,所以我经常使用“转换”异常到RuntimeException,如下所示.将throws子句添加到许多方法中,对于没有真正“处理”(正确处理)的异常,这似乎是冗长和分散注意力的.是以下不好的风格,如果是这样,有什么更好的方法来处理这个?
try {
  thread.join();
}
catch (InterruptedException e) {
      Console.printwriter.format("%s\n",e.printStackTrace());
  throw new RuntimeException();
}

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

解决方法

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

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

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

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

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

throw new RuntimeException(e);

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

猜你在找的Java相关文章