[Spring] ExceptionHandler와 ControllerAdvice를 사용하여 예외 처리하기

EB·2024년 3월 11일

개인 프로젝트를 진행하면서 예외 처리를 할 때 @ExceptionHandler@ControllerAdvice 을 사용하였다. 두 어노테이션에 대해 알아보자!

@ControllerAdvice

  • 스프링 부트 애플리케이션에서 전역적으로 예외를 핸들링 할 수 있게 해주는 어노테이션이다.
    이를 통해 코드의 중복을 피할 수 있다.

@ExceptionHandler

  • AOP를 이용한 예외처리 방식으로, @ExceptionHanlder를 사용하면 특정 클래스에서 발생하는 예외를 value로 선언해서 처리할 수 있다
  • Controller, RestController에만 적용이 가능하다.

👩‍💻 프로젝트에서 어떻게 사용했을까?

@ControllerAdvice
public class ExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    protected ResponseEntity<ErrorResponse> handlerCustomException(MethodArgumentNotValidException exception) {
        return ErrorResponse.toResponseEntity(exception);
    }
    ... 이외 예외처리
}

MethodArgumentNotValidException

  • MethodArgumentNotValidException는 유효성 검사에서 발생하는 예외로, @Valid 어노테이션을 사용하여 데이터를 검증할 때 발생하는 예외이다.
  • 프로젝트에서 @Valid어노테이션을 사용했고 이때 발생하는 예외들은 모두 처리하기 위해 @ControllerAdvice + @ExceptionHandler를 사용했다.
  • 그 이외에도 다양한 예외들을 추가하여 예외핸들링 할 수 있다.
profile
👩‍💻✨junior developer

0개의 댓글