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

本記事は、Schooの「Java入門 初級【2026年版】」第9回「例外処理」を学ぶ前後に、Javaの独自例外の考え方を整理したい方向けの記事です。
独自例外とは、自分のプログラムに合わせて作る例外クラスです。Javaに用意されている例外だけでは意味が伝わりにくいときに、InvalidHpException のような名前の例外を作ります。
ポイントは、難しい仕組みを増やすことではありません。「何が問題なのか」をクラス名で読み取れるようにすることです。
Schoo コースページ:Java入門 初級【2026年版】
独自例外は何のために作るのか
独自例外は、プログラム独自のルール違反を分かりやすく表すために作ります。
- HPが0未満になってはいけない
- 注文金額が上限を超えてはいけない
- 登録に必要な情報がそろっていない
このようなルールは、Java標準の例外名だけでは意図がぼやけることがあります。独自例外を使うと、プログラム内のルールを例外の名前として表せます。
独自例外クラスの基本形
独自例外は、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で独自例外を受け取る
呼び出し元では、独自例外の型を指定して catch できます。
try {
checkHp(-10);
System.out.println("HPチェックに成功しました");
} catch (InvalidHpException e) {
System.out.println("エラー:" + e.getMessage());
}
System.out.println("処理を継続します");
catch (InvalidHpException e) と書くことで、HPの不正値に対する専用の対応を書けます。標準の例外を広く受け取るよりも、何に対応しているのかが読み取りやすくなります。
独自例外を作りすぎない
独自例外は便利ですが、何でも専用の例外にすればよいわけではありません。標準の例外で十分に意味が伝わる場合は、既存の例外を使ったほうが読みやすいこともあります。
独自例外を作るか迷ったら、「その例外名を見た人が、何のルール違反か理解しやすくなるか」で考えると判断しやすくなります。
確認問題
- 独自例外は、何のために作りますか。
InvalidHpExceptionという名前から、どのような問題を表していると読み取れますか。super(message)は、何のために書いていますか。
演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。
あわせて読みたい関連記事
まとめ
独自例外は、自分のプログラムに合わせて作る例外クラスです。標準の例外だけでは意味が伝わりにくいとき、InvalidHpException のような名前を付けることで、何の問題なのかを読み取りやすくできます。まずは、例外クラス名でルール違反の種類を表す、という考え方を押さえましょう。