Java NullPointerException,我可以使用抛出,因为我;期望;代码可能会因为NullPointerException而崩溃?
当方法体中的代码可能由于NullPointerException而崩溃时,我可以用throws声明我的方法吗 我在这个方法中有类似于Java NullPointerException,我可以使用抛出,因为我;期望;代码可能会因为NullPointerException而崩溃?,java,exception,try-catch,Java,Exception,Try Catch,当方法体中的代码可能由于NullPointerException而崩溃时,我可以用throws声明我的方法吗 我在这个方法中有类似于a.getB().getC()的代码 编辑: 我试过使用示例代码 class B { public void methodB() {} } class A { public void methodA(B b) throws NullPointerException { b.methodB(); } } @Test pub
a.getB().getC()
的代码
编辑:
我试过使用示例代码
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);
}
测试已成功。您的方法是否引发异常
public static boolean getC() throws Exception{
if(Some Condition)
throw new Exception("Some Error");
else
return true;
}
或
如果它这样做,那么当方法抛出异常时,您可以捕获异常
public static void main(String args[]){
try{
boolean isOK = getC();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
您可以使用可选的
public YourObjectC getC(){
YOurObjectA a = new YourObjectA();
Optional<YourObjectC> opt = Optional.ofNullable(a)
.map(YOurObjectA::getB)
.map(YourObjectB::getC);
return opt.orElseThrow(NullPointerException::new);
}
public YourObjectC getC(){
YOurObjectA=新的YOurObjectA();
Optional opt=可选的。不可用的(a)
.map(YOurObjectA::getB)
.map(YourObjectB::getC);
返回opt.orelsetrow(NullPointerException::new);
}
方法将返回对象C,但如果对象为null,则将抛出null指针exc,您不应该这样做
如果该值可能为空,则在此情况下必须验证并应用业务规则。否则,我认为最好检查必须具有的参数是否为null,然后抛出一个
IllegalArgumentException
。例如,您可以在Javadoc上描述这种行为。但是声明一个方法抛出
是没有用的。你试过了吗?我能得到一个答案吗?请浏览这两页-不建议捕获,但你可以看到这一点
public YourObjectC getC(){
YOurObjectA a = new YourObjectA();
Optional<YourObjectC> opt = Optional.ofNullable(a)
.map(YOurObjectA::getB)
.map(YourObjectB::getC);
return opt.orElseThrow(NullPointerException::new);
}