38

例えば:

public String showMsg(String msg) throws Exception {
    if(msg == null) {
        throw new Exception("Message is null");
    }
    //Create message anyways and return it
    return "DEFAULT MESSAGE";
}

String msg = null;
try {
    msg = showMsg(null);
} catch (Exception e) {
    //I just want to ignore this right now.
}
System.out.println(msg); //Will this equal DEFAULT MESSAGE or null?

特定のケースでは基本的に例外を無視する必要があります (通常、複数の例外がメソッドからスローされる可能性があり、特定のケースでは 1 つが問題にならない場合)。単純化のために使用した哀れな例にもかかわらず、showMsg のリターンは引き続き実行されます。それとも、スローは実際にメソッドを返しますか?

4

1 に答える 1

70

例外がスローされた場合、ステートメントは実行さreturnません。例外をスローすると、プログラムの制御フローがただちに例外のハンドラー (*) に移動し、他の処理はスキップされます。によって例外がスローされた場合、特にprint ステートメントにmsgなります。nullshowMsg

(*) ただし、finallyブロック内のステートメントは実行されますが、ここではあまり関係ありません。

于 2013-04-12T02:50:49.767 に答える