【发布时间】:2012-11-10 16:49:38
【问题描述】:
我在一本 C# 介绍性书籍中读到,如果您不知道如何处理异常,则不应捕获异常。想到在 Java 中编程时的那一点建议,我有时发现我不知道如何处理异常,但我不得不捕捉它或“渗透它”以避免编译错误。我宁愿不要在调用树中一直使用 throws 子句来混淆方法,所以我经常求助于将异常“转换”为 RuntimeException,如下所示。将throws 子句添加到许多方法中以处理没有真正“处理”(正确处理)的异常似乎冗长且分散注意力。以下是不好的风格吗?如果是,有什么更好的方法来处理这个问题?
try {
thread.join();
}
catch (InterruptedException e) {
Console.printwriter.format("%s\n", e.printStackTrace());
throw new RuntimeException();
}
编辑:除了混乱之外,渗透异常还有另一个问题:在代码修订之后,您可能最终会得到一些不必要的 throws 子句。我知道清除它们的唯一方法是反复试验:删除它们并查看编译器是否抱怨。显然,如果您想保持代码干净,这很烦人。
【问题讨论】:
-
处理它的更好方法是编写代码,使您不必不断抛出异常。
-
同意。我一般不会声明很多新定义的异常。我主要关心第三方和Java异常。
-
@user1394965 是的,您的代码不应“不断地”抛出异常。但这与是否有可能例外是完全不同的问题。任何涉及 IO 操作或阻塞方法的事情都可能充满不可避免的异常处理。
标签: java exception checked-exceptions