다음은 앞의 코드를 실행한 결과입니다.
▲ 그림 10-8 실행 결과
Note ≣ | @ControllerAdvice 클래스 안에 있는 @ExceptionHandler와 컨트롤러 안에 있는 @ExceptionHandler가 선언된 메서드가 모두 있을 때 어떤 우선순위로 처리되나요?
@ControllerAdvice가 선언된 클래스 안에 있는 @ExceptionHandler가 선언된 메서드보다 컨트롤러에 선언된 @ExceptionHandler 메서드가 먼저 실행됩니다. 즉, 컨트롤러의 메서드를 실행하는 과정에서 예외가 발생하면 예외를 처리할 @ExceptionHandler가 선언된 메서드를 찾게 되기 때문입니다.
1. 같은 컨트롤러에 위치한 @ExceptionHandler가 선언된 메서드 중 해당 예외를 처리할 수 있는 메서드를 찾습니다.
2. 같은 컨트롤러에 위치한 메서드가 예외를 처리할 수 없는 경우 @ControllerAdvice가 선언된 클래스 안에 @ExceptionHandler가 선언된 메서드를 찾습니다.