[Spring] 스프링 예외 처리 방법 2가지(@ExceptionHandler, @ControllerAdvice)

    스프링부트에서는 @ControllerAdvice와 @ExceptionHandler 어노테이션을 사용하여 전역적인 예외 처리를 할 수 있습니다. 이를 통해 각각의 컨트롤러에서 예외 처리를 하지 않아도 되며, 예외 처리 로직의 중복을 제거할 수 있습니다.

     

    1. @ControllerAdvice

    • @ControllerAdvice 어노테이션을 사용하여 공통 예외 처리를 수행하는 클래스를 정의합니다.
    • 이 클래스에는 @ExceptionHandler 어노테이션을 사용하여 예외 처리 메서드를 정의합니다.
    • @ExceptionHandler 어노테이션을 사용하여 예외 처리 메서드에 처리할 예외 클래스를 지정할 수 있습니다.

    2. @ExceptionHandler

    • @ExceptionHandler 어노테이션을 사용하여 예외 처리 메서드를 정의합니다.
    • 이 어노테이션을 사용한 메서드는 해당 예외가 발생했을 때 호출됩니다.
    • 메서드 파라미터에는 예외 클래스 타입을 지정할 수 있습니다.

     

    @ControllerAdvice
    public class GlobalExceptionHandler {
     
        @ExceptionHandler(Exception.class)
        public ResponseEntity<ErrorResponse> handleException(Exception e) {
            ErrorResponse errorResponse = new ErrorResponse("500", e.getMessage());
            return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
        }
     
        @ExceptionHandler(UserNotFoundException.class)
        public ResponseEntity<ErrorResponse> handleUserNotFoundException(UserNotFoundException e) {
            ErrorResponse errorResponse = new ErrorResponse("404", e.getMessage());
            return new ResponseEntity<>(errorResponse, HttpStatus.NOT_FOUND);
        }
    }

    댓글

    Designed by JB FACTORY