問題
次のうちチェック例外はどれですか。(2つ選択)
A)java.lang.ArithmeticException
B)java.lang.RuntimeException
C)java.lang.ArrayIndexOutOfBoundsException
D)java.lang.Exception
E)java.lang.NumberFormatException
F)java.lang.ClassCastException
G)java.io.IOException
解答
A)java.lang.ArithmeticException
B)java.lang.RuntimeException
C)java.lang.ArrayIndexOutOfBoundsException
D)java.lang.Exception
E)java.lang.NumberFormatException
F)java.lang.ClassCastException
G)java.io.IOException
解説
例外は、Javaプログラムの実行中に発生する異常な状態を扱うための仕組みです。例外は大きく「チェック例外」と「非チェック例外」の2つに分類されます。
チェック例外 (Checked Exception)
- 定義: チェック例外は、コンパイラが検出できる例外で、プログラム内でこれらの例外が発生する可能性がある場合、必ず処理する(try-catchブロックを使用する)か、メソッドのシグネチャに
throws
を使って宣言する必要があります。 - 例:
java.lang.Exception
: これはチェック例外のスーパークラスです。このクラスを継承するすべての例外はチェック例外になります。java.io.IOException
: 入出力操作に関する問題(例えば、ファイルが見つからない場合など)を示します。これもチェック例外です。
非チェック例外 (Unchecked Exception)
- 定義: 非チェック例外は、RuntimeExceptionクラスとそのサブクラスに属します。これらは通常、プログラムの論理エラーや不正な操作から生じるもので、必ずしも処理する必要はありません。コンパイラはこれらの例外を検出しません。
- 例:
java.lang.ArithmeticException
: ゼロで割るなどの算術的なエラーが発生した場合にスローされます。java.lang.RuntimeException
: 実行時に発生する可能性のあるエラーを示す基本クラスです。java.lang.ArrayIndexOutOfBoundsException
: 配列の不正なインデックスにアクセスした場合にスローされます。java.lang.NumberFormatException
: 数字形式の不正な変換に関連するエラーです。java.lang.ClassCastException
: オブジェクトの不正なキャストを行った場合に発生します。
チェック例外は、コンパイル時に明示的に処理(例外処理)する必要がある例外です。これに対して、非チェック例外は実行時に発生するもので、通常は必ずしも処理する必要がありません。
チェック例外として正しい選択肢
- D)java.lang.Exception:これはチェック例外のスーパークラスです。直接的なチェック例外ではないですが、チェック例外の代表です。
- G)java.io.IOException:これはチェック例外で、入出力操作に関連する問題が発生した際にスローされます。
非チェック例外
- A)java.lang.ArithmeticException
- B)java.lang.RuntimeException
- C)java.lang.ArrayIndexOutOfBoundsException
- E)java.lang.NumberFormatException
- F)java.lang.ClassCastException
これらはすべて非チェック例外です。
対象資格:Java SE17 認定資格