0

我有一个抛出异常子类的方法。如果我为每个异常子类执行相同的捕获功能,那么只捕获异常类是不好的做法,还是应该单独捕获每个异常?

4

5 回答 5

5

是的,这是不好的做法,因为它使 catch 块捕获不应捕获的运行时异常。

如果您使用 Java 7,则可以使用

catch (SomeException | SomeOtherException | YetAnotherException e) {
    ...
}
于 2012-12-06T20:40:36.347 回答
3

Exception始终建议捕获可能的异常(子类),而不是仅在一个catch 块中捕获所有异常。这是一个参考

于 2012-12-06T20:40:13.397 回答
0

在某些时候,必须处理异常。所以希望在应用程序中有一个地方可以处理(捕获)所有异常。通常,这是一个捕获意外异常的地方,以防止应用程序完全崩溃,而是提供一些恢复路径,以及向用户提供一些原谅消息。一般来说,在你的类中,处理预期的失败并信任你的类和方法提供给调用者的契约。例如,在通过 ID 字符串从数据库中获取记录的方法中,只捕获 SQL 异常,因为您的合同可能会明确表示不允许使用空 ID。将错误的输入异常返回给调用者,否则您最终可能会在错误的级别验证用户输入。

于 2012-12-06T21:17:45.730 回答
0

如果您可以对代码抛出的任何意外异常(例如运行时异常)执行相同的功能,那很好。

否则,我建议捕获子类。

考虑一下如果您的代码的某些部分抛出了NullPointerException?

于 2012-12-06T20:41:01.557 回答
0

是的,通过捕获 Exception 类来压制异常是不好的做法。异常旨在将问题报告传输给处理程序,这样做可能会隐藏严重错误。

于 2012-12-06T20:42:18.703 回答