Sta*_*Jay 0 java exception nullpointerexception
我知道不建议捕获NPE,但是NPE是一个方法,其返回值是基于NPE来源的变量的布尔值.
代码是这样的:
public static boolean isStale() {
return a.get(); //a==null causing NPE
}
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我真的不知道如果没有a的信息将返回什么.我该怎么办?如果有的话,我应该扔什么样的例外?
编辑:
1.返回true或false将是不准确的,因为结果实际上取决于a内的信息.
您没有理由阻止代码抛出异常.只考虑你的情况:你自己说你的方法的行为没有定义a == null,所以你为什么要处理它?它只会导致奇怪的行为,并且您的用户可能会惊讶于他们的代码失败或在某处产生意外结果,而他们对API的调用很顺利.
例外是专门为解决这类问题而设计的,所以要充分利用它.您可以抛出一个新的自定义异常来添加一些特定于API的语义,或者让NPE传播给调用者.
例如 :
public static boolean isStale() {
if (a == null) throw new IllegalStateException("a should not be null");
return a.get();
}
Run Code Online (Sandbox Code Playgroud)
但是,你更有可能在构造函数中这样做(因为我假设a是一个属性).在构造函数中,我会选择IllegalArgumentException.
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |