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