@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에서 처리 가능
'Web Development' 카테고리의 다른 글
| springBoot 채팅 프로젝트 시작함 (0) | 2024.10.29 |
|---|---|
| DevOps , CI/CD (0) | 2024.05.18 |
| 1월 16일, 책읽고 (0) | 2024.01.16 |
| Map에서 key값 매핑의 문제( 코딩 관점에서 ) (1) | 2024.01.16 |
| 깃허브 리드미에 gif 움짤 올리기 (0) | 2023.12.29 |