次のコードスニペットが表示されました。 1つのメソッドはreturn文を必要としますが、もう1つはreturn文を要求しませ私はケース2)が "return null"ステートメントを必要とすると信じていますが、コンパイラは文句を言います。なぜ私は分からない。try/catchブロックの後にメソッドがreturn return文を必要とするかどうかを返しますか?
ケース1) "return 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;
}
}
最初の条件も2番目の条件も一致しない場合はどうなりますか?つまり、if(...)でもelse if(...)でもありませんか?あなたはその事件のために何かを返す必要があります。 –
@AndyTurnerは言った。最初のケースでは、try文を終了できます。 2回目の試行ではリターンが避けられないので、キャッチ後のステートメントには到達できません。 – Tyler
はい、私は理解していますし、ヌルステートメントを返す必要があります。 – DaeYoung