public class Main {
static int test() {
try {
return 1;
} finally {
System.out.print("F");
}
}
public static void main(String[] args) {
System.out.println(test());
}
}
選択肢
- あなたの回答
- 正解
正解
B. F1
詳細解説
try ブロックで return しようとしても、メソッドを抜ける前に finally が実行されます。先に F が出力され、その後 println により戻り値 1 が表示されます。
なぜ他の選択肢が違うのか
- finally の出力があるため 1 だけにはなりません。
- println は test() の戻り値を受け取ってから出力するため、F が先です。
- try-finally の構文として正しく、コンパイルできます。
罠ポイント
finally は return の前にも実行されます。ただし finally 側で return すると挙動がさらに読みにくくなるため、実務でも避けるのが安全です。