Web Development
9월 14일
doriver
2024. 9. 14. 15:02
@ControllerAdvice
특정 기능( 예외 처리, 데이터 바인딩, 모델 속성 등 )을 컨트롤러에 공통으로 적용하기 위해 사용됨
@ExceptionHandler, @ModelAttribute, @InitBinder와 결합하여, 컨트롤러에서 공통으로 사용될 로직을 쉽게 처리
비동기 작업(@Async)에서 발생한 예외는 별도의 스레드에서 실행되므로 @ControllerAdvice로 전달되지 않음
비동기 예외를 처리하려면 AsyncUncaughtExceptionHandler를 별도로 구현해야 함
필터나 인터셉터는 컨트롤러로 요청이 전달되기 전에 동작하기 때문에, 해당 계층에서 발생한 예외는 @ControllerAdvice의 범위를 벗어난다.
필터나 인터셉터 예외는 서블릿 레벨에서 처리하거나 별도의 전역 필터에서 예외 처리가 필요
Unchecked Exception( RuntimeException )
메서드 선언부에 throws 선언 없이 던져짐, 발생 시 자동으로 상위로 전파.
Checked Exception
메서드 선언부에 throws를 추가하여 명시적으로 던져야 함
IOException, SQLException 등이 해당됨
Checked Exception이 처리되지 않으면 컴파일 에러가 발생, Java가 Checked Exception을 강제적으로 처리하도록 요구함
Unchecked Exception는 자동으로 상위로 전파됨
Checked Exception는 throws해줘야 전파되는데 , 컴파일 에러 발생해서 처리하는데 어려움 없음
결국 다 @ControllerAdvice에서 처리 가능