클라이언트에게 정확한 오류 정보를 전달해야 하는데, 단순히 4xx, 5xx 같은 HTTP 상태 코드만 반환핳면 구체적으로 어떤 오류가 발생했는지 클라이언트가 파악하기 힘듭니다. 그렇기 때문에 오류 상황에 맞는 명확한 응답 스펙을 정의하고, JSON 형식으로 구조화된 오류 정보를 전달해야 합니다.

스프링이 제공하는 ExceptionResolver

  1. ExceptionHandlerExceptionResolver
    1. @ExceptionHandler를 사용한 예외처리
    2. 가장 우선순위가 높고 유연한 방식임
  2. ResponseStatusExceptionResolver
    1. @ResponseStatus 애노테이션 또는 ResponseStatusException을 통해서 HTTP 상태 코드를 지정
    2. 예외에 따라 적절한 상태 코드를 자동으로 매핑
  3. DefaultHandlerExceptionResolver
    1. 스프링 내부 예외 처리
    2. 표준 HTTP 상태 코드로 변환

@ExceptionHandler와 @ControllerAdvice

@ExceptionHandler

@ControllerAdvice