こんにちは!ISAMU(@burlesca_isa)です!
今回の対象読者は
- javaの例外処理を使いこなすためのポイントを知りたい方
javaの例外処理を使いこなすためのポイントを解説します
java 例外処理を使いこなすためのポイントは
- 例外クラスの分類
- 例外クラスの階層
- 例外クラスのサブクラス
を覚えることです。
例外クラスの分類
例外クラスの分類を覚えることで、
例外処理を追加しないとエラーになるクラスを判断する事ができます。
例外クラスは
- checked例外(チェック例外)
- unchecked例外(非チェック例外)
の2種類分類されます。
- チェック例外・・・例外処理を必ず追加しないとエラーが発生する
- 非チェック例外・・・任意で例外処理を追加する
チェック例外のクラスを判断する方法は、
Exceptionクラスを継承している かつ RuntimeExceptionクラスを継承していない
かどうかです。
例外クラスの階層
例外クラスの階層を覚えることで、
- チェック例外・非チェック例外か判別
- 例外処理のでのルールの理解
につながります。
例外クラスの継承図を見てみます。
Throwableクラスが例外クラスのルートクラスです。
Throwableをスーパークラスにして、
ExceptionクラスとErrorクラスの2系統に分かれます
Errorクラスは非チェック例外なので、任意で例外処理を追加します。
Errorクラスは対処できない不具合で発生するため、
殆どの場合例外処理は行いません。
重要なのがExceptionクラスです。
Exceptionをスーパークラスとしてクラスが大きく2種類に分類されます。
RuntimeExceptionクラスを継承しているかそうでないか。
RuntimeExceptionを継承している例外クラスは非チェック例外です。
そして、RuntimeExceptionクラスではない、Exceptionのクラスがチェック例外になります。
まとめると、
- Errorクラス・・・非チェック例外
- ExceptionクラスのサブクラスであるRuntimeExceptionクラスを継承・・・非チェック例外
- RuntimeExceptionクラス以外のExceptionクラス・・・チェック例外
「RuntimeExceptionクラス以外のExceptionクラス」はチェック例外なので、
例外処理を行わなければコンパイルエラーになります。
暗記する例外クラス
例外クラスは多くありますが、
頻出する覚えたほうが良い例外クラスは
- RuntimeExceptionのサブクラス
- RuntimeExceptionクラス以外のExceptionクラス
です。
Errorのサブクラスはあまり使用することがないため、
後回しで良いです。
RuntimeExceptionのサブクラス
- ArrayIndexOutOfBoundsException・・・不正なインデックスで要素にアクセスしたとき
- ClassCastException・・・参照変数において間違ったキャストしたとき
- NullPointerException・・・nullが代入された参照変数で、メソッド呼び出しを行ったとき
- NumberFormatException・・・整数を表さない文字列を整数に変換するとき
RuntimeException以外のExceptinoのサブクラス
- IOException・・・入出力を行う時
- FileNotFoundException・・・ファイルが存在しない時
FileNotFoundExceptionはIOExceptionのサブクラスです。
覚えることで下記のことが理解できるようになります
- catchブロックの複数の定義
- throwsの使用
- throwsがあるメソッドのオーバーライド
これらは次回の講座で解説します
[nlink url=”https://kajirinyo.com/java_course_31/”]