何时捕获NullPointerException是明智的?

时间:2010-11-12 21:44:01

标签: java

我认为大多数时候,如果不是总是这样,我们可以通过在发送消息之前检查对象是否为空来避免空指针异常。

何时捕获NullPointerException而不是检查空指针是否明智?

5 个答案:

答案 0 :(得分:6)

虽然从技术上讲,诸如NullPointerException之类的RuntimeException与IOException之类的已检查异常相同,但它们的理念却截然不同。简而言之,检查异常是为了允许处理程序员控制的问题,例如网络故障或丢失文件。未经检查的异常的预期用途是捕获编程错误。

鉴于它们可以捕获编程错误,因此几乎不会捕获NullPointerException和其他未经检查的异常。相反,应该修复允许抛出它们的编程错误。

答案 1 :(得分:5)

检查null是最好的方法。我从未接受过NPE。实际上我总是试图不从我的方法发送null而是做一个“return Collections.emptyList();”所以调用者不必检查null。

答案 2 :(得分:2)

恕我直言。捕获NPE的成本要高得多(内存和处理器时间),然后检查null

答案 3 :(得分:2)

正如其他人所说,检查null而不是捕获它更好。在我看来,唯一的一次,你会捕获NullPointerException,当你调用的一些API和你无法控制时抛出那个特殊的异常。然后,捕获NullPointerException并相应地处理它是有意义的。

答案 4 :(得分:1)

彼得是对的,成本更高。虽然有些情况下您不想打扰检查并只捕获空指针,例如在JVM上实现脚本语言解释器。如果你在任何地方检查null,表达式评估代码就会变得太乱了。