본문 바로가기
Web Development

9월 14일

by doriver 2024. 9. 14.

@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