public class Main {
public static void main(String[] args) {
try {
if (args.length == 0)
throw new IllegalArgumentException("no args");
else
throw new NullPointerException("null found");
} catch (IllegalArgumentException | NullPointerException e) {
System.out.println("caught: " + e.getMessage());
}
}
}
選択肢
- あなたの回答
- 正解
正解
A. caught: no args
詳細解説
| で複数の例外型を並べるマルチキャッチ構文が使えます。引数なしなので IllegalArgumentException がスローされ caught: no args が表示されます。
なぜ他の選択肢が違うのか
- 引数なしの場合は NullPointerException はスローされません。
- マルチキャッチは Java 7 以降の正当な構文です。
- IllegalArgumentException は catch ブロックで捕捉されます。
罠ポイント
マルチキャッチでは継承関係にある例外型を並べることはできません(コンパイルエラー)。無関係な例外型のみ列挙できます。