我遇到以下代碼片段。一種方法需要返回語句,但另一種方法不需要。我相信情況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