Java | 早期リターン(ガード節)のメリットと注意点

Java Java
スポンサーリンク

実務的な「早期リターン+例外処理」のコードサンプル

早期リターンは 業務ロジックの条件分岐 に、例外処理は 外部要因や予測不能な失敗 に使うのが基本です。両方を組み合わせると、コードがシンプルで安全になります。


例1:ユーザー登録処理

public void registerUser(String name, String email) {
    // --- 早期リターンで入力チェック ---
    if (name == null || name.isEmpty()) {
        System.out.println("名前を入力してください");
        return;
    }
    if (email == null || !email.contains("@")) {
        System.out.println("メールアドレスが不正です");
        return;
    }

    // --- 例外処理で外部要因をカバー ---
    try {
        Database.saveUser(name, email); // DB保存処理
        System.out.println("ユーザー登録完了: " + name);
    } catch (SQLException e) {
        System.out.println("データベースエラー: " + e.getMessage());
    }
}
Java

👉 入力チェックは「想定内の異常」なので早期リターン。
👉 DBエラーは「外部要因の失敗」なので例外処理。


例2:APIリクエスト処理

public Response handleRequest(Request req) {
    // --- 早期リターンでリクエスト検証 ---
    if (req == null) {
        return new Response(400, "リクエストが空です");
    }
    if (req.getUserId() == null) {
        return new Response(400, "ユーザーIDが必要です");
    }

    // --- 例外処理で外部サービス呼び出し ---
    try {
        Data data = ExternalApi.fetchData(req.getUserId());
        return new Response(200, "成功", data);
    } catch (IOException e) {
        return new Response(503, "外部サービスエラー: " + e.getMessage());
    }
}
Java

👉 リクエストの妥当性は早期リターンで即終了。
👉 外部APIの失敗は例外処理で安全に対応。


例3:ファイル処理

public void processFile(String path) {
    // --- 早期リターンで事前チェック ---
    if (path == null || path.isEmpty()) {
        System.out.println("ファイルパスが指定されていません");
        return;
    }

    File file = new File(path);
    if (!file.exists()) {
        System.out.println("ファイルが存在しません: " + path);
        return;
    }

    // --- 例外処理で読み込み失敗をカバー ---
    try (BufferedReader br = new BufferedReader(new FileReader(file))) {
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    } catch (IOException e) {
        System.out.println("ファイル読み込みエラー: " + e.getMessage());
    }
}
Java

👉 ファイルパスや存在チェックは早期リターン。
👉 実際の読み込みエラーは例外処理。


まとめ

  • 早期リターン: 想定内の異常(入力チェック、条件不一致)を即終了してコードをシンプルに。
  • 例外処理: 想定外の異常(外部サービス、ファイル、DBエラー)を安全にキャッチ。
  • 組み合わせると: 「業務ロジックは早期リターン」「外部要因は例外処理」で、読みやすく堅牢なコードになる。
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました