起こりえないチェック例外の catch
このコードを実行するとどうなるか。
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
int x = 1;
} catch (IOException e) {
System.out.println("io");
}
System.out.println("end");
}
}
- A
endと出力される - B
ioとendが出力される - C 実行時に例外が発生する
- D コンパイルエラーになる
正解と解説を見る
正解: D
- A: try の中で IOException が発生しえないのに catch しているので、コンパイルエラーです。実行まで進まないので、何も出力されません。
- B: 実行まで進まないので、何も出力されません。
- C: コンパイルの時点でエラーになるので、実行時の例外にはなりません。
- D: チェック例外は、try の中で発生する可能性がないと catch できません。IOException を投げる処理がないのでコンパイルエラーです。
ポイント
- try の中で投げられる可能性のない チェック例外 を catch するとコンパイルエラーです。
- Exception や非チェック例外の catch なら、何も投げない try でも書けます。
「例外処理の仕組みとチェック例外、非チェック例外、エラーの違い」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)