Woo*_*ass 11 java coding-style
在java中,以下哪一种处理可能为空的引用的"接受"方式?请注意,空引用并不总是表示错误...
if (reference == null) {
//create new reference or whatever
}
else {
//do stuff here
}
Run Code Online (Sandbox Code Playgroud)
要么
try {
//do stuff here
}
catch (NullPointerException e) {
//create new reference or whatever
}
Run Code Online (Sandbox Code Playgroud)
小智 14
已经给出的答案非常好(不要使用控制流的例外;抛出和处理的例外是昂贵的).还有另一个重要的原因,特别是没有抓住NullPointerException.
考虑执行以下操作的代码块:
try {
reference.someMethod();
// Some other code
}
catch (NullPointerException e) {
// 'reference' was null, right? Not so fast...
}
Run Code Online (Sandbox Code Playgroud)
这似乎是一种处理reference...的无效的安全方法,但是如果引用是非null并且someMethod()提升了NPE呢?或者如果在try街区的其他地方有一个NPE被提升怎么办?捕获NPE是防止错误被发现和修复的可靠方法.
当然是这一个
if (reference == null) {
//create new reference or whatever
}
else {
//do stuff here
}
Run Code Online (Sandbox Code Playgroud)
我们不应该依赖于例外的决策,而这些例外根本不是为了这个目的而给出的,它们也很昂贵.
那么如果您没有做出决定并且只是验证初始化变量那么
if (reference == null) {
//create new reference or whatever
}
//use this variable now safely
Run Code Online (Sandbox Code Playgroud)
我看到一些自动代码生成器在accessors/getter方法中包装了这个东西.
| 归档时间: |
|
| 查看次数: |
9691 次 |
| 最近记录: |