Throwable でないクラスを throw
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
throw new Problem();
}
}
class Problem {
}
- A 何も出力されない
- B 実行時に例外が発生する
- C コンパイルエラーになる
- D
Problemと出力される
正解と解説を見る
正解: C
- A: Throwable を継承していないクラスは throw できないので、コンパイルエラーです。
- B: コンパイルの時点でエラーになるので、実行時の例外にはなりません。
- C: throw できるのは Throwable (Exception や Error など) の子クラスだけです。Problem は継承していないのでコンパイルエラーになります。
- D: コンパイルエラーなので実行できません。
ポイント
- throw できるのは Throwable のサブクラス (Exception や Error など) だけです。カスタム例外は Exception か RuntimeException を継承して作ります。