Skip to content

공통 에러 응답 및 ErrorCode 가이드

이소은 edited this page Jan 29, 2026 · 2 revisions

본 프로젝트는 일관된 에러 응답을 위해 ErrorCode 열거형(Enum)과 BusinessException을 사용합니다. 클라이언트는 에러 발생 시 지정된 HTTP 상태 코드와 메시지를 통해 오류 상황을 인지합니다.

1. 에러 처리 구조 에러는 다음과 같은 흐름으로 처리됩니다.

  1. 발생: 비즈니스 로직에서 조건 미충족 시 BusinessException 발생
  2. 캡처: GlobalExceptionHandler가 발생한 예외를 가로챔
  3. 응답: ErrorCode에 정의된 HTTP 상태 코드와 메시지로 클라이언트에 응답

2. ErrorCode 정의 (참조)

  • 위치: DGU_AI_LAB.admin_be.error.ErrorCode
  • 구성 요소: HttpStatus (상태 코드), String (사용자 메시지)
@Getter
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum ErrorCode {
    // 400 Bad Request
    INVALID_INPUT_VALUE(HttpStatus.BAD_REQUEST, "입력값이 올바르지 않습니다."),

    // 401 Unauthorized
    EXPIRED_ACCESS_TOKEN(HttpStatus.UNAUTHORIZED, "액세스 토큰이 만료되었습니다."),

    // 404 Not Found
    RESOURCE_NOT_FOUND(HttpStatus.NOT_FOUND, "해당 리소스를 찾을 수 없습니다."),

    // 500 Internal Server Error
    INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "서버 내부 오류입니다.");

    private final HttpStatus httpStatus;
    private final String message;
}

3. 사용 가이드
신규 에러 코드 추가 시

  1. ErrorCode enum에 에러 상황을 명확히 나타내는 상수를 추가합니다.
  2. 유사한 상태 코드(예: 400번대)끼리 그룹화하여 작성합니다.
  3. 메시지는 프론트엔드에 바로 보여줄 수 있도록 명확한 한글로 작성합니다.

비즈니스 로직에서 사용 시

  • 객체가 존재하지 않거나 권한이 없는 등 예외 상황에서 다음과 같이 사용합니다.
// 예: 리소스를 찾을 수 없는 경우
if (pod == null) {
    throw new BusinessException(ErrorCode.RESOURCE_NOT_FOUND);
}

Clone this wiki locally