Errors 中級

レコードベースのエラーレスポンス

レコードを使って簡潔でイミュータブルなエラーレスポンス型を定義する。

✕ Java 8
// Verbose error class
public class ErrorResponse {
    private final int code;
    private final String message;
    // constructor, getters, equals,
    // hashCode, toString...
}
✓ Java 16+
public record ApiError(
    int code,
    String message,
    Instant timestamp
) {
    public ApiError(int code, String msg) {
        this(code, msg, Instant.now());
    }
}
このコードに問題がありますか? お知らせください。
📏

簡潔

30行ではなく3行でエラー型を定義できます。

🔒

イミュータブル

エラーデータは作成後に誤って変更されることがありません。

📋

自動toString

ロギングに最適 — すべてのフィールドが自動的に表示されます。

旧来のアプローチ
MapまたはVerboseクラス
モダンなアプローチ
エラーレコード
JDKバージョン
16
難易度
中級
レコードベースのエラーレスポンス
利用可能

JDK 16(2021年3月)以降、広く利用可能

レコードはエラーレスポンスに最適です — イミュータブルで、比較用のequals/hashCodeが組み込まれており、ロギング用のtoStringが自動生成されます。カスタムコンストラクタでバリデーションやデフォルト値を追加できます。

共有 𝕏 🦋 in