CS

[Spring] Filter, Interceptor 예외 처리방법

KJihun 2023. 11. 22. 13:42
728x90

 

 

 

HandlerInterceptor

 

HandlerInterceptor 흐름

Interceptor(preHandle) -> Handler -> Interceptor(postHandle) ->
HandlerExceptionResolver(예외 복구) -> View 렌더링 -> Interceptor(afterCompletion)

 

1. afterCompletion 전에 발생한 예외는 모두 DispatcherServlet으로 반환된다.
afterCompletion은 모든 처리가 끝난 후 예외 정보, 요청, 응답 정보를 모두 받는 위치에 있기 때문이다.

2. preHandle, postHandle 에서 예외가 발생할 때 @ExceptionHandler 로 핸들링할 수 있다.

3. preHandle에서 예외발생 시, postHandle은 호출되지 않는다.

4. afterCompletion은 앞에서 예외 발생 여부와 상관없이 무조건 호출된다.

 

Filter

 

Filter에서 주로 발생하는 예외는 Spring Security에서 JWT 인증 및 인가 시 발생하는

ExpiredJwtException, JwtException, IllegalArgumentException과 같은 것들이 있다.

그렇기에 Filter에서 발생하는 예외를 처리하기 위해서는 예외를 핸들링하는 Filter를 추가하는 방법이 있다.

예외 발생이 예상되는 Filter의 상위에 예외를 핸들링하는 Filter를 만들어서 Filter Chain에 추가해주면 된다.