MyAppException.java
// 独自の例外クラスを定義
public class MyAppException extends Exception {
// コンストラクタでメッセージを受け取り、親クラスに渡す
public MyAppException(String message) {
super(message);
}
}
ExceptionUtil.java
public class ExceptionUtil {
public static void checkCode(int code) throws MyAppException {
if (code == 999) {
// 条件に合致した場合に独自例外をスロー
throw new MyAppException("コード999は使用できません");
}
// 正常な場合はコードを出力
System.out.println("コード: " + code);
}
}
Main.java(再掲)
public class Main {
public static void main(String[] args) {
try {
ExceptionUtil.checkCode(100); // 正常
ExceptionUtil.checkCode(999); // 独自例外をスロー
} catch (MyAppException e) {
System.out.println("独自例外発生: " + e.getMessage());
}
}
}
解説:独自例外の定義と活用
このステップでは、業務固有の状況を表現するための例外クラスを自分で作る方法を学びます。
独自例外を作る理由
標準の IllegalArgumentException
や NullPointerException
では表現しきれないような
アプリケーション特有のエラー状態に名前と意味を与えるために、独自例外を定義します。
public class MyAppException extends Exception {
public MyAppException(String message) {
super(message);
}
}
出力例
ExceptionUtil.checkCode(100);
// → コード: 100
ExceptionUtil.checkCode(999);
// → 独自例外発生: コード999は使用できません
補足:throws との併用
MyAppException
はチェック例外(Exception
のサブクラス)なので、
メソッドシグネチャに throws MyAppException
をつける必要があります。
まとめ:このステップで学ぶべきこと
Exception
を継承すれば、自分だけの例外クラスを定義できる- 業務ルールに合った例外を作ることで、コードの意図やエラーの意味が明確になる
- チェック例外であれば、
throws
を忘れずに書く必要がある
Just Keep Typing, Baby!では、この「例外修羅道」でつまづいた人向けの解説をしています。こちらもぜひ!
// tesh:
// 「え、なんで?」ってなったやろ?それ、ここ。