Exception を継承した例外を投げる
このコードを実行するとどうなるか。
public class Main {
static void order(int n) {
if (n == 0) {
throw new OrderException();
}
}
public static void main(String[] args) {
order(0);
}
}
class OrderException extends Exception {
}
- A 何も出力されずに終わる
- B 実行時に例外が発生する
- C コンパイルエラーになる
- D
OrderExceptionと出力される
正解と解説を見る
正解: C
- A: OrderException は Exception を継承したチェック例外なので、throws がないとコンパイルエラーです。
- B: コンパイルの時点でエラーになるので、実行時の例外にはなりません。
- C: Exception を継承した独自例外はチェック例外です。order() に throws OrderException がないのでコンパイルエラーになります。
- D: コンパイルエラーなので実行できません。
ポイント
- Exception を継承したクラスはチェック例外です。投げるメソッドに
throws OrderExceptionが必要です。