Java空引用最佳实践

26 浏览
0 Comments

Java空引用最佳实践

在Java中,以下哪种方法更被“接受”来处理可能为null的引用?请注意,null引用并不总是表示错误...

if (reference == null) {
    //create new reference or whatever
}
else {
    //do stuff here
}

还是

try {
    //do stuff here
}
catch (NullPointerException e) {
    //create new reference or whatever
}

admin 更改状态以发布 2023年5月24日
0
0 Comments

捕获异常相对来说是比较昂贵的。通常最好是检测条件而不是对其做出反应。

0
0 Comments

已经给出的答案非常好(不要使用异常来控制流程;抛出和处理异常的成本很高)。还有另外一个重要的原因,特别是不要捕获NullPointerException

考虑一个执行以下操作的代码块:

try {
    reference.someMethod();
    // Some other code
}
catch (NullPointerException e) {
    // 'reference' was null, right? Not so fast...
}

这似乎是处理reference的null情况的安全方法...但是如果reference不是null且someMethod()引发了NPE呢?或者在try块的其他地方引发了NPE? 捕获NPE是一个确保错误无法被发现和修复的方法。

0