Javaの例外一覧と処理方法をコード付きで分かりやすく解説!

こんにちは!

この記事ではJavaの例外の種類とその処理の方法を説明します。
Javaでのプログラミングでは例外処理は避けられないのでしっかり理解しましょう。

目次

Javaの例外とは

Javaにおける例外(Exception)は、プログラム実行中に発生する予期せぬ状況を表します。

例外は大きく分けて以下の二つがあります。

  • チェックされる例外(Checked Exceptions)
  • チェックされない例外(Unchecked Exceptions)

まずはこれら二種類の例外について解説していきます。

Checked Exceptions

これらはExceptionクラスから派生していて、コンパイラによってチェックされます。
なので Checked Exceptionに分類されます。
(Exceptionクラスについてはこちらを参照)

チェックされるというのは、例外の発生をコンパイラが見つけられるということです。

例:IOException・SQLExceptionなど

Unchecked Exceptions

これらはRuntimeExceptionクラスから派生しており、コンパイラによるチェックはありません。
実行時例外と呼ばれます。

例:NullPointerException・ArrayIndexOutOfBoundsExceptionなど

まとめ
  • コンパイル時に気づくのがChecked Exceptions
  • 実行時に気づくのが Unchecked Exception

例外処理

例外処理の基本

Javaでの例外処理の方法を見ていきます。基本的にtry catch文を使用して例外を処理します。
まずはtry catch文の構文を紹介します。

try {
    // 例外が発生する可能性のあるコード
} catch (ExceptionType name) {
    // 例外が発生した場合の処理
}

この構文をもとに具体的なコード例を見てみましょう。

try {
    FileInputStream file = new FileInputStream("example.txt");
    int data = file.read();
    while(data != -1) {
        System.out.print((char) data);
        data = file.read();
    }
    file.close();
} catch (FileNotFoundException e) {
    System.out.println("ファイルが見つかりません。");
} catch (IOException e) {
    System.out.println("I/Oエラーが発生しました。");
}

上記コードではtryブロックの中でファイルを開いて読み込み、内容を出力しています。
この際、FileNotFoundException(ファイルが見つからない)や、IOException(入出力時の例外)が発生する可能性があります。

なのでこれらの例外が発生した時の処理をcatch文であらかじめ記述しておきます。

今回の例では、FileNotFoundExceptionが発生した場合は「ファイルが見つかりません」と出力し、
IOExceptionが発生した場合は「I/Oエラーが発生しました」と出力しています。

finallyブロック

try catch文は最後にfinallyブロックをつけることも多いです。

finallyブロックに記述された内容は、例外発生の有無に関わらず必ず実行されます。
構文は次の通りです。

try {
    // 例外が発生する可能性のある処理
} catch (ExceptionType name) {
    // 例外処理
} finally {
    // 必ず実行する処理
} 

例外のスローとカスタム例外

例外は自分で定義することもできます。その例を見てみましょう。

public class CustomException extends Exception {
    public CustomException(String message) {
        super(message);
    }
}

public class Main {
    public static void main(String[] args) {
        try {
            throw new CustomException("カスタム例外が発生しました");
        } catch (CustomException e) {
            System.out.println(e.getMessage());
        }
    }
}

この例ではCustomExceptionという例外クラスを自分で定義しています。
このクラスはExceptionクラスを継承しています。

なので自作したCustomExceptionクラスは、Exceptionクラスの全ての性質を持っていることになります。
(Exceptionクラスから派生している他の例外と同様に扱うことができる)

Mainクラス内のmain()メソッドで、try catch文を記述しています。

tryブロックではthrow new CustomException()として先ほど自分で定義した例外を発生させています。

catchブロックではこの例外をキャッチしてメッセージを出力しています。

このように自分で例外を定義することで、任意のタイミングで例外を発生させることが可能です。

まとめ

この記事ではJavaにおける例外とその処理の基本について解説しました。

カスタム例外などJavaで本格的なプログラムを書いていく際によく使う内容もあります。
しっかり覚えて自分で使えるようにしておくと役に立つと思います!

当サイトでは他にもJavaに関する記事があるのでそちらも見て頂けると嬉しいです!

あわせて読みたい
よく使うJavaのメソッド一覧【サンプルコード有り】 Javaでのプログラミングにおいて、String、Aray List、HashMap、Mathクラスは非常に頻繁に使用されます。これらのクラスには、コーディングを効率化するための便利なメ...
あわせて読みたい
Javaのエラーの見方とよく出るエラー一覧【コード・解決方法有】 こんにちは!tenjiprogrammingです。 この記事ではJavaでプログラムを書いているとよく出会うエラーの意味とその基本的な解決方法を解説します。エラーを自分で解決でき...
tenjiprogramming
20代エンジニア。
メインで使用している言語はJava/JavaScript/TyoeScript/react/C言語
AWSなどクラウド周りも経験あり。
楽しいをモットーに記事を書いています。
Noteではサンプルコード付きのゲームの作り方など様々な内容を公開しています。
そちらも是非ご覧ください!
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次