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

로깅에 완벽 — 모든 필드를 자동으로 표시합니다.

이전 방식
맵 또는 장황한 클래스
모던 방식
오류 레코드
JDK 버전
16
난이도
중급
레코드 기반 오류 응답
사용 가능

JDK 16 (2021년 3월) 이후 널리 사용 가능

레코드는 오류 응답에 완벽합니다 — 불변이고, 비교를 위한 내장 equals/hashCode를 가지며, 로깅을 위한 toString도 있습니다. 커스텀 생성자로 유효성 검사나 기본값을 추가할 수 있습니다.

공유 𝕏 🦋 in