
이전글에서 이어지는 내용이다.
@ControllerAdvice는 스프링 MVC에서 전역으로 예외나 바인딩, 모델 속성 등을 처리할 수 있게 해주는 클래스 레벨 어노테이션.
@ExceptionHandler는 특정 예외가 발생했을 때 실행될 메서드에 붙이는 메서드 레벨 어노테이션.
✍️ 작성
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(IllegalArgumentException.class)
public ResponseEntity<String> handleIllegalArgument(IllegalArgumentException ex) {
return new ResponseEntity<>("잘못된 인자가 전달: " + ex.getMessage(), HttpStatus.BAD_REQUEST);
}
}
위 예제에서 IllegalArgumentException이 발생하면, 해당 메서드가 호출되어 에러 메시지와 함께 BAD_REQUEST(400) 상태 코드를 반환한다. 이렇게 하면 컨트롤러에서 따로 예외 처리를 하지 않아도 되고, 공통된 방식으로 예외 처리가 가능해진다.
즉, @ControllerAdvice와 @ExceptionHandler를 함께 사용하면 예외 관리를 중앙 집중화할 수 있어서 코드 유지보수나 관리가 훨씬 수월해진다.
멋쟁이 사자처럼 강의자료