Java | 実務で使う switch 文のテンプレート集(例外・ログ対応つき)

Java Java
スポンサーリンク

「実務で使える switch 文のテンプレート集」を、例外処理ログ出力を組み込んだ形でまとめてみます。業務コードでは「ただ分岐する」だけでなく、異常系の扱いログ記録が重要になるので、それを意識したサンプルを紹介します。


基本テンプレート(ログ+例外)

switch (value) {
    case "A":
        logger.info("処理Aを開始します");
        doProcessA();
        break;
    case "B":
        logger.info("処理Bを開始します");
        doProcessB();
        break;
    default:
        logger.warn("未定義の値: {}", value);
        throw new IllegalArgumentException("不正な入力値: " + value);
}
Java
  • logger: 業務では System.out.println よりも Logger を使うのが一般的。
  • 例外: 想定外の値は IllegalArgumentException などを投げて呼び出し元に通知。

数値入力のバリデーション付き

switch (day) {
    case 1:
        logger.debug("入力値: {}", day);
        System.out.println("月曜日");
        break;
    case 2:
        System.out.println("火曜日");
        break;
    case 3:
        System.out.println("水曜日");
        break;
    case 4:
        System.out.println("木曜日");
        break;
    case 5:
        System.out.println("金曜日");
        break;
    case 6:
        System.out.println("土曜日");
        break;
    case 7:
        System.out.println("日曜日");
        break;
    default:
        logger.error("不正な曜日番号: {}", day);
        throw new IllegalArgumentException("曜日は1〜7で指定してください");
}
Java
  • debugログ: 正常系でも入力値を記録しておくとトラブルシュートに役立つ。
  • errorログ: 異常系は必ずエラーレベルで記録。

複数ケースをまとめる(フォールスルー活用)

switch (status) {
    case "NEW":
    case "PENDING":
        logger.info("新規または保留状態: {}", status);
        handleNewOrPending();
        break;
    case "APPROVED":
        logger.info("承認済み");
        handleApproved();
        break;
    case "REJECTED":
        logger.info("却下");
        handleRejected();
        break;
    default:
        logger.error("未知のステータス: {}", status);
        throw new IllegalStateException("ステータス不明: " + status);
}
Java
  • フォールスルー: 複数の値で同じ処理をしたいときに便利。
  • IllegalStateException: 状態管理の分岐では「ありえない状態」を例外で表す。

enumとの組み合わせ(業務コードでよく使う)

enum Command {
    START, STOP, RESTART
}

public void execute(Command cmd) {
    switch (cmd) {
        case START:
            logger.info("サービス開始");
            startService();
            break;
        case STOP:
            logger.info("サービス停止");
            stopService();
            break;
        case RESTART:
            logger.info("サービス再起動");
            restartService();
            break;
        default:
            logger.error("未定義のコマンド: {}", cmd);
            throw new UnsupportedOperationException("コマンド未対応: " + cmd);
    }
}
Java
  • enum: 値の範囲が限定されるので、実務では安全性が高い。
  • UnsupportedOperationException: 「まだ未対応の機能」を表すのに適切。

まとめ

  • 基本は「正常系はログ+処理、異常系はログ+例外」
  • loggerのレベルを使い分ける(info/debug/error)
  • defaultで必ず異常系を拾う(例外を投げる or エラーログ)
  • enumを活用すると安全性が高い

👉 実務でよくあるパターンを網羅しました。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました