入れ子の try
出力はどれか。
public class Main {
public static void main(String[] args) {
try {
try {
throw new RuntimeException("in");
} finally {
System.out.print("A");
}
} catch (RuntimeException e) {
System.out.print("B" + e.getMessage());
} finally {
System.out.print("C");
}
}
}
- A
ABinC - B
BinAC - C
AC - D
ABC
正解と解説を見る
正解: A
- A: 内側の finally で A → 外側の catch で B と in (メッセージ) → 外側の finally で C の順です。
- B: 例外が外へ伝わる前に、内側の finally (A) が先に実行されます。
- C: 外側の catch で B と getMessage() の in も出力されます。
- D: getMessage() はメッセージ "in" を返すので、in も出力されます。
ポイント
- 内側の try には catch が無いので、内側の finally を実行してから例外が外側に伝わります。