ExceptionUtil.java
public class ExceptionUtil {
public static void processData(String[] inputs) {
for (String input : inputs) {
try {
// 入力を整数に変換
int value = Integer.parseInt(input);
// 100をvalueで割って結果を出力
int result = 100 / value;
System.out.println("入力 \"" + input + "\" の結果 → " + result);
} catch (NumberFormatException e) {
// 数値に変換できなかった場合の処理
System.out.println("入力 \"" + input + "\" は数値に変換できませんでした");
} catch (ArithmeticException e) {
// ゼロによる除算が発生した場合の処理
System.out.println("入力 \"" + input + "\" はゼロによる除算エラーです");
}
}
}
}
解説:複数処理の個別 try-catch による安全実行
このステップでは、複数の入力に対して、1件ずつ例外処理を行いながら安全に処理を継続するテクニックを学びます。
ポイント1:ループごとに try-catch を分ける
for (String input : inputs) {
try {
// 個別の例外処理
} catch (...) {
...
}
}
このようにすることで、1件で例外が発生しても、他のデータに影響を与えず処理が続行できます。
ポイント2:複数 catch によるエラー分類
NumberFormatException
→ 文字列が整数に変換できないArithmeticException
→ ゼロ除算などの算術エラー
適切な例外ごとにメッセージを分けることで、ログやエラー表示がより明確になります。
出力例(テストコードによる結果)
入力 "20" の結果 → 5
入力 "0" はゼロによる除算エラーです
入力 "abc" は数値に変換できませんでした
入力 "10" の結果 → 10
まとめ:このステップで学ぶべきこと
- 複数の例外が起きうる処理を、1件ずつ安全に実行する構造を作る
- 処理の途中でエラーがあっても、他の処理を続けることが重要
- catch を分けて、エラーの種類に応じたメッセージやログを出力する
Just Keep Typing, Baby!では、この「例外修羅道」でつまづいた人向けの解説をしています。こちらもぜひ!
// tesh:
// この一歩を踏み外すと、しばらく地獄。今、整地しとけ。