ExceptionUtil.java
public class ExceptionUtil {
public static void traceError(int[] array, int index, int divisor) {
try {
// 指定されたインデックスの値を取り出し、割り算を行う
int value = array[index];
int result = value / divisor;
System.out.println("計算結果: " + result);
} catch (Exception e) {
// エラー発生時に詳細情報を出力
System.out.println("エラーが発生しました");
System.out.println("原因: " + e.getMessage());
e.printStackTrace(); // スタックトレースを出力(開発用)
}
}
}
解説:例外の原因を追跡する3つの情報
このステップでは、例外が発生したときにその詳細をログ出力する方法を学びます。
1. 固定メッセージ
System.out.println("エラーが発生しました");
ユーザー向けやログ監視用の基本的なアラート表示。
2. getMessage()
で原因を要約
System.out.println("原因: " + e.getMessage());
/ by zero
やIndex 5 out of bounds for length 3
のように、エラーの主な内容を表示- ユーザーへの表示や、簡易ログに向いている
3. printStackTrace()
で技術者向け詳細ログ
e.printStackTrace();
- 例外が「どこで発生したか」までわかる
- 開発中のデバッグや、ログファイルへの出力に有効
- 本番環境ではログライブラリ(Log4j など)と連携してファイル出力するのが一般的
出力例(エラー時)
エラーが発生しました
原因: / by zero
java.lang.ArithmeticException: / by zero
at ExceptionUtil.traceError(ExceptionUtil.java:5)
...
まとめ:このステップで学ぶべきこと
- 例外発生時に何が起きたかをユーザーにも開発者にも伝える手段を持つことが重要
getMessage()
とprintStackTrace()
を組み合わせて、適切なレベルの情報提供ができるようにする- 開発現場では、これらの出力をログファイルに残す設計が基本
Just Keep Typing, Baby!では、この「例外修羅道」でつまづいた人向けの解説をしています。こちらもぜひ!
// tesh:
// コードは書けた。でも、それだけで終わっていいのか?