例外が起きたときの流れ
出力はどれか。
public class Main {
public static void main(String[] args) {
try {
System.out.print("A");
int[] a = new int[1];
a[1] = 1;
System.out.print("B");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.print("C");
} finally {
System.out.print("D");
}
System.out.print("E");
}
}
- A
ACDE - B
ABCDE - C
ACD - D
AD
正解と解説を見る
正解: A
- A: A の後 a[1] で例外 → catch で C → finally で D → try 文の後の E と進みます。
- B: a[1] で例外が発生するので、その後の B は実行されません。
- C: 例外は catch で処理済みなので、try 文の後の E も実行されます。
- D: 例外を catch しているので C も出力され、処理も E まで続きます。
ポイント
- 例外が起きると try の残り ("B") は飛ばされ、合う catch が実行されます。その後 finally、その後ろへと進みます。