当方法体中的代码因NullPointerException而崩溃时,我可以使用throws声明我的方法
我在此方法中有a.getB().getC()
之类的代码
修改
Catching nullpointerexception in Java
我尝试过示例代码,
class B {
public void methodB() {}
}
class A {
public void methodA(B b) throws NullPointerException {
b.methodB();
}
}
@Test
public void test_null_pointer() {
boolean thrown1 = false;
boolean thrown2 = false;
A a = new A();
try {
B b = new B();
a.methodA(b);
} catch (NullPointerException n) {
thrown1 = true;
}
try {
a.methodA(null);
} catch (NullPointerException n) {
thrown2 = true;
}
assertFalse(thrown1);
assertTrue(thrown2);
}
测试成功了。
答案 0 :(得分:1)
你的方法抛出异常吗?
public static boolean getC() throws Exception{
if(Some Condition)
throw new Exception("Some Error");
else
return true;
}
或
public static boolean getC() throws Exception{
try{
... Do Something ...
return true;
}catch(Exception e){
throw e
}
}
如果是,则可以在方法抛出异常时捕获异常。
public static void main(String args[]){
try{
boolean isOK = getC();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
答案 1 :(得分:1)
您可以使用可选
public YourObjectC getC(){
YOurObjectA a = new YourObjectA();
Optional<YourObjectC> opt = Optional.ofNullable(a)
.map(YOurObjectA::getB)
.map(YourObjectB::getC);
return opt.orElseThrow(NullPointerException::new);
}
Method将返回对象C,但如果object为null将抛出Null Pointer exc
答案 2 :(得分:0)
你不应该。
如果此值可能为null,则必须在此情况下验证并应用业务规则。否则,我认为检查必须参数是否为null然后抛出IllegalArgumentException
是一种很好的做法。例如,您可以在Javadoc上描述此行为。但宣布method throws
是没用的。