Javaの独自例外とは?自分で例外クラスを作る理由

Schoo Java入門 初級 第9回 例外処理

本記事は、Schooの「Java入門 初級【2026年版】」第9回「例外処理」を学ぶ前後に、Javaの独自例外の考え方を整理したい方向けの記事です。

独自例外とは、自分のプログラムに合わせて作る例外クラスです。Javaに用意されている例外だけでは意味が伝わりにくいときに、InvalidHpException のような名前の例外を作ります。

ポイントは、難しい仕組みを増やすことではありません。「何が問題なのか」をクラス名で読み取れるようにすることです。

Schoo コースページ:Java入門 初級【2026年版】

独自例外は何のために作るのか

独自例外は、プログラム独自のルール違反を分かりやすく表すために作ります。

  • HPが0未満になってはいけない
  • 注文金額が上限を超えてはいけない
  • 登録に必要な情報がそろっていない

このようなルールは、Java標準の例外名だけでは意図がぼやけることがあります。独自例外を使うと、プログラム内のルールを例外の名前として表せます。

図解:例外クラス名で何が問題かを伝える
一般的な例外
Exception
何か問題が起きたことは分かる
独自例外
InvalidHpException
HPの値が不正だと名前で分かる
独自例外は、エラーの種類を自分のプログラムに合わせた名前で表したいときに使います。

独自例外クラスの基本形

独自例外は、Exception を継承したクラスとして作れます。

class InvalidHpException extends Exception {
    InvalidHpException(String message) {
        super(message);
    }
}

InvalidHpException という名前にすることで、「HPの値が不正なときの例外」だと読み取りやすくなります。

super(message) は、受け取ったメッセージを親クラスである Exception に渡す処理です。これにより、あとで e.getMessage() でメッセージを取り出せます。

独自例外をthrowする

作った独自例外は、throw で呼び出し元に知らせます。

static void checkHp(int hp) throws InvalidHpException {
    if (hp < 0) {
        throw new InvalidHpException("HPが不正な値です");
    }

    System.out.println("HPチェックに成功しました");
}

hp < 0 の場合、InvalidHpException として問題を知らせます。メソッド名だけでなく、例外名からも「HPのチェックで問題が起きた」と分かります。

図解:独自例外を作って投げ、catchで受け取る
class InvalidHpException extends Exception {
    InvalidHpException(String message) {
        super(message);
    }
}

if (hp < 0) {
    throw new InvalidHpException("HPが不正です");
}
1. 例外クラスを作る
InvalidHpException という名前で問題の種類を表す
2. 不正な値で知らせる
HPが0未満なら、独自例外として呼び出し元へ知らせる
3. catchで受け取る
catch (InvalidHpException e) で専用の対応を書ける
独自例外を使うと、どのルールに違反したのかを例外の型として区別できます。

catchで独自例外を受け取る

呼び出し元では、独自例外の型を指定して catch できます。

try {
    checkHp(-10);
    System.out.println("HPチェックに成功しました");
} catch (InvalidHpException e) {
    System.out.println("エラー:" + e.getMessage());
}

System.out.println("処理を継続します");

catch (InvalidHpException e) と書くことで、HPの不正値に対する専用の対応を書けます。標準の例外を広く受け取るよりも、何に対応しているのかが読み取りやすくなります。

独自例外を作りすぎない

独自例外は便利ですが、何でも専用の例外にすればよいわけではありません。標準の例外で十分に意味が伝わる場合は、既存の例外を使ったほうが読みやすいこともあります。

独自例外を作るか迷ったら、「その例外名を見た人が、何のルール違反か理解しやすくなるか」で考えると判断しやすくなります。

確認問題

  1. 独自例外は、何のために作りますか。
  2. InvalidHpException という名前から、どのような問題を表していると読み取れますか。
  3. super(message) は、何のために書いていますか。

演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。

あわせて読みたい関連記事

まとめ

独自例外は、自分のプログラムに合わせて作る例外クラスです。標準の例外だけでは意味が伝わりにくいとき、InvalidHpException のような名前を付けることで、何の問題なのかを読み取りやすくできます。まずは、例外クラス名でルール違反の種類を表す、という考え方を押さえましょう。

info

シェアする