早期リターンと例外処理(try-catch)の使い分け
ここまで「早期リターンのメリットと注意点」を見てきましたが、実務では 「早期リターンで済ませるか」「例外処理で扱うか」 の判断が重要になります。
早期リターンを使う場面
- 予測できる異常系(想定内の条件チェック)
→ 入力が空文字、数値が範囲外、ユーザーが未ログインなど。 - 業務ロジック上の分岐
→ 「条件を満たさないなら処理しない」という単純なケース。
例:入力チェック
public void registerUser(String name) {
if (name == null || name.isEmpty()) {
System.out.println("名前を入力してください");
return; // 想定内の異常なので早期リターン
}
System.out.println("登録完了: " + name);
}
Java👉 入力が空なら即終了。これは「想定内の異常」なので例外を投げる必要はない。
例外処理(try-catch)を使う場面
- 予測できない異常系(想定外のエラー)
→ ファイルが存在しない、ネットワーク障害、DB接続エラーなど。 - システム的な失敗や外部要因
→ プログラムの外で起きる問題は例外で扱う。
例:ファイル読み込み
public void readFile(String path) {
try {
BufferedReader br = new BufferedReader(new FileReader(path));
System.out.println("ファイルを読み込みました");
br.close();
} catch (IOException e) {
System.out.println("ファイル読み込みエラー: " + e.getMessage());
}
}
Java👉 ファイルが存在しないなどは「想定外の異常」なので例外処理で対応。
使い分けの指針
| 状況 | 早期リターン | 例外処理 |
|---|---|---|
| 入力チェック(空文字、範囲外) | ✅ | ❌ |
| 業務ロジックの分岐(条件不一致) | ✅ | ❌ |
| 外部要因の失敗(ファイル、ネットワーク、DB) | ❌ | ✅ |
| 予測できない異常 | ❌ | ✅ |
まとめ
- 早期リターン: 想定内の異常や条件分岐をシンプルに処理。
- 例外処理: 想定外の異常や外部要因の失敗を安全に処理。
- 実務のコツ: 「予測できるかどうか」で判断する。予測できるなら早期リターン、できないなら例外処理。
✅ つまり、早期リターンは「業務ロジックの整理」に、例外処理は「システム的な失敗対応」に使うのが基本です。
