是在代码中检查异常还是在Java中使用try-catch更好的做法?

bad*_*nda 6 java exception-handling exception try-catch

我有人向我提到,捕获所有异常并不一定是好习惯(例如,NullPointerException).我正在寻找一个解释,这是什么时候这是一件好事,什么时候不是,为什么它是这样的:D

谢谢!!

badPanda

Boz*_*zho 5

简而言之:

检查异常是为了捕获

未经检查的异常和错误可能会冒泡.(这些是类的子类RuntimeExceptionError).

这是因为已检查的异常是"预期的",程序可以从中恢复.未经检查的异常是程序无法恢复的(容易).

Sun的教程说(它是关于决定你应该创建什么样的异常,但它在另一方面也提供了信息 - 即使用异常时):

这是底线指南:如果可以合理地期望客户端从异常中恢复,则将其作为已检查的异常.如果客户端无法执行任何操作以从异常中恢复,请将其设置为未经检查的异常.


ben*_*rre 3

进一步来说,Bozho 的后检查异常通常会处理您期望发生的异常,无论您的代码有多完美(即:拔掉网络电缆并捕获 IO 异常)。您声明它们的方法抛出已检查的异常,因为其他代码必须处理如何处理这些异常。

未经检查的异常往往用于意外情况,例如 NullPointerException 经常冒泡,因为程序应该抛出检查的异常、过滤数据、设置默认值等。它们是未经检查的并且通常是意外的,因此您不必捕获它们。

这并不是 100% 的情况,但作为一种通用方法,它就是这样工作的,尤其是在 Java 中。