역할


1. 핵심 구조

public class ApiException extends RuntimeException {

    private static final long serialVersionUID = 1L;

    private final ErrorCode errorCode;        // 내부 코드 + HTTP 상태 정보
    private final String customMessage;       // 사용자 정의 메시지

    // 기본 메시지 사용
    public ApiException(ErrorCode errorCode) {
        super(errorCode.getDefaultMessage());
        this.errorCode = errorCode;
        this.customMessage = null;
    }

    // 커스텀 메시지 사용
    public ApiException(ErrorCode errorCode, String customMessage) {
        super(customMessage);
        this.errorCode = errorCode;
        this.customMessage = customMessage;
    }

    public ErrorCode getErrorCode() {
        return errorCode;
    }

    // 실제 내려줄 메시지
    public String getMessageToSend() {
        return customMessage != null ? customMessage : errorCode.getDefaultMessage();
    }
}

2. 설명


3. 포인트