catchブロックとfinallyブロック内2つにreturnがある場合の動きについて
Q&A
Closed
解決したいこと
catchブロックとfinallyブロックそれぞれにreturnが記述されている場合の動きについて。
該当するソースコード
public class Main {
public static void main(String[] args) {
int ans = test();
System.out.println(ans);
}
private static int test() {
try {
throw new RuntimeException();
} catch (RuntimeException e) {
return 1;
} finally {
return 2;
}
}
}
自分で試したこと
finallyにreturnを記述するのはNGと知っていますが、どのような順序で実行されていくのかが知りたいです。
実行結果は2となりますが、catchブロックはスキップされ、finallyのreturn 2;が実行されるという解釈で合っていますでしょうか。
また、仮にそうだとした場合、catchブロックでreturnすると抜けるので先にfinallyのreturnが実行された結果ということでしょうか。