独自の例外の継承関係で catch する
出力はどれか。
public class Main {
public static void main(String[] args) {
try {
throw new PaymentException();
} catch (AppException e) {
System.out.println("app");
}
}
}
class AppException extends RuntimeException {
}
class PaymentException extends AppException {
}
- A
app - B 何も出力されない
- C コンパイルエラーになる
- D 実行時に例外が発生する
正解と解説を見る
正解: A
- A: PaymentException は AppException の子なので、catch (AppException e) で捕まり app が出力されます。
- B: catch で捕まえて app を出力するので、何も出力されないことはありません。
- C: 親の例外の型で子の例外を catch できるので、コンパイルできます。
- D: 例外は catch で処理されるので、プログラムは正常に終わります。
ポイント
- 親の例外クラスの catch で、サブクラスの例外も捕まえられます。独自の例外も同じです。