我遇到以下代码片段。一种方法需要返回语句,但另一种方法不需要。我相信情况2)需要“返回null”语句,但编译器抱怨。我不知道为什么。情况1)如果我删除“return null”语句,编译器会抱怨它需要它。在try/catch块之后,一个方法是否返回一个对象需要返回null语句?
private Foo createFoo(Bar bar, Baz baz) throws SomeException {
try {
if (...) {
// perform computation to return foo object
......
return foo;
}
else if (...) {
// perform computation to return foo object
......
return foo;
}
} catch(SomeException se) {
se.printStackTrace();
throw se;
}
return null;
}
案例2)如果我添加“return null”语句,那么编译器会抱怨无法访问的代码。
private Foo createFoo2(Bar bar, Baz baz) throws SomeException {
try {
// perform computation to return foo object
......
return foo;
} catch (SomeException se) {
se.printStackTrace();
throw se;
}
}
如果您的第一个或第二个条件都不匹配会怎样?既不是“if(...)'也不是'else if(...)'?你需要为这种情况返回一些东西。 –
@AndyTurner说什么。第一种情况,你可以退出try语句。第二个返回在try中是不可避免的,因此catch后面的语句无法访问 – Tyler
是的,我理解并且有意义,它需要返回null语句。 – DaeYoung