【Java入門】例外処理の3つの種類と書き方について

【Java入門】例外処理の3つの種類と書き方についてJava入門
スポンサーリンク

こんにちは!しーま(@s59shima)です。

いつもブログをご覧いただきありがとうございます。

今回は、こんな悩みや疑問のある方に向けて記事を書きました。

例外処理の書き方や種類について教えて欲しい・・・

例外クラスの種類や構文について詳しく知りたい方にはオススメの記事です。

≪スキマ時間、活用してみませんか≫

世界最大級のオンライン学習サイトUdemy

例外処理の3つの種類

Javaには期待していない動作時にも対応できるように仕組み化されています。

その仕組みが例外処理といいます。例外が発生する原因は様々ありますが、大きく3つに分けることができます。

Javaの標準APIで用意されているクラスを確認してみましょう!

Exceptionクラス

プログラム作成時に想定できる異常を通知する検査例外があります。

検査例外にはjava.lang.Exceptionクラスがあります。

このExceptionクラスを継承したサブクラス(※1)をプログラム作成時に必ず記述する必要があります。

記述しない場合は、コンパイルエラーとなり、プログラムを動かすことができません。

※1.引用元【Java8 APIドキュメント(https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Exception.html)】

RuntimeExceptionクラス

Exceptionクラスとは逆で、 プログラム作成時には想定できない異常を通知する実行時例外があります。

実行時例外にはjava.lang.RuntimeExceptionクラス(※2)があります。

実行時例外はプログラム作成時に記述する必要がないため、コンパイルエラーになることもありません。

※2.引用元【Java8 APIドキュメント(https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Exception.html)】

Errorクラス

アプリ・システムで重大な問題が発生したことを示します(致命的なエラー)。

エラーにはjava.lang.Errorクラス(※3)があります。

継続が不可能な状態なので、プログラムを終了させる必要があります。

※3.引用元【Java8 APIドキュメント(https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Exception.html)】

例外処理の3つの書き方

例外発生時、その原因に対するエラー処理を記述することができます。

try・catch・finally

最も基本的な構文です。

  • tryブロック:例外が発生するコードを含む処理
  • catchブロック:例外をキャッチした場合の処理
  • finallyブロック:try・catchブロック終了後、必ず実行する処理
try {

} catch ( IOException e ) {

} finally {

}

try・with・resources

Java7以降から使用できる書き方です。finallyブロックが省略されていますよね。

tryブロックの後に小かっこ(…)内でストリームなどを宣言し、生成することが可能になりました。

その結果、finallyブロックでクローズ処理などを書く必要がなくなりました。

try ( InputStream is = Files.newInputStream(Paths.get( "" )) ) {

} catch ( IOException e ) {

}

※try・with・resources使える条件として、AutoCloseableインターフェースを実装したクラスに限定されます。

サンプルではInputStreamクラスがそれに当たります。

マルチキャッチ(複数可)

複数の例外クラスをまとめて記述することが可能です。まとめて記述することで冗長なコードを書かなくてよい場合があります。

try {
  Path path = Paths.get( "" );
  Files.delete( path );
} catch ( NoSuchFileException | DirectoryNotEmptyException e ) {

} catch ( IOException e ) {

}

よく使う例外処理の一覧

開発現場でよく目にする例外処理について一覧にしました。例外が発生する原因について確認してみましょう!

NullPointerException

原因:null値の変数を参照しようとした時に発生する例外

対策:例)Nullチェックを行い、Nullの場合、後続処理を回避したりする。

ArrayIndexOutOfBoundsException

原因:定めた要素以上を参照した時に発生する例外

対策:例)定めた要素(範囲内)の数だけ処理を行う。

NumberFormatException

原因:文字列型から数値型に変換失敗した場合に発生する例外

対策:例)変換対象の文字列が数値かどうかチェックを行い、変換処理を行う。

ClassCastException

原因:キャストできない型にキャストしようとした時に発生する例外

対策:例)変換が必要な際、適切な型に変換する。

ClassNotFoundException

原因:指定したクラスが見つからなかった場合に発生する例外

対策:例)Class.forNameメソッドを使用する際に引数は正しく宣言する

まとめ

今回は、ファイル操作について解説しました。

最後まで読んでいただきありがとうございました。

本記事をまとめると以下の通りです。

関連記事

Javaスキルで悩んでいる方必見!本気で学習できる環境を探してみよう!
詳細はこちら
Javaスキルで悩んでいる方必見!本気で学習できる環境を探してみよう!
詳細はこちら
タイトルとURLをコピーしました