try-catch-finally
inの実行順序を把握してみましたjava
。実行順序は
- 試す
- catch (エラーが発生した場合/例外がキャッチされた場合)
- 最終的に (例外がキャッチされたかどうか)
しかし、私は次の結果と混乱しています
public class TryCatchFinally {
static int i = 0;
public static void main(String[] args) {
try {
System.out.println(i++);
main(args);
} catch (StackOverflowError e) {
System.out.println("Catch");
} finally {
System.out.println("Finally");
}
}
}
アウトプット(アウトプットの一部)
9127
9128
9129
9130
CatcFCatch // what is the wrong here???
Finally
Finally // there are more Finally printed here.
私の質問は、ここで実際に何が起こっているのですか?
印刷されない理由をさらに追加させてください"Catch"
???
でこれを実行すると、これが出力されIntelliJ IDEA
ます。しかし、私が実行するterminal
と、次のように出力されます。
9151
9152
9153
9154CatchFinallyCatch
Finally
Finally
Finally
Finally