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에서 처리 가능