레코드 기반 오류 응답
간결하고 불변인 오류 응답 타입에 레코드를 사용합니다.
코드 비교
✕ 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 지원
레코드 기반 오류 응답
사용 가능
JDK 16 (2021년 3월) 이후 널리 사용 가능
동작 원리
레코드는 오류 응답에 완벽합니다 — 불변이고, 비교를 위한 내장 equals/hashCode를 가지며, 로깅을 위한 toString도 있습니다. 커스텀 생성자로 유효성 검사나 기본값을 추가할 수 있습니다.
관련 문서