반응형
HandlerExceptionResolver 시작하기
IllegalArgumentException을 처리하지 못 해 컨트롤러 밖으로 넘어가는 일이 생길 때 HTTP 상태 코드를 400으로 처리하고 싶다고 가정하고 실습을 진행했다.
if (id.equals("bad")) {
throw new IllegalArgumentException("잘못된 입력 값");
}
먼저 ApiExceptionController를 수정해 주었다.
HandlerExceptionResolver를 사용하면 컨트롤러 밖으로 던져진 예외를 해결하고 동작 방식을 변경할 수 있따. 줄여서 ExceptionResolver라고 부른다.
@Slf4j
public class MyHandlerExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
// Exception 경우 ={}를 안 적어줘도 된다.
log.info("call resolver", ex);
try {
if (ex instanceof IllegalArgumentException) {
log.info("IllegalArgumentException resolver to 400");
response.sendError(HttpServletResponse.SC_BAD_REQUEST, ex.getMessage());
return new ModelAndView();
}
} catch (IOException e) {
log.error("resolver ex", 0);
}
return null;
}
}
MyHandlerExceptionResolver도 코딩해 주었다.
ExceptionResolver가 ModelAndView를 반환하는 이유는 Exception을 Resolver(해결)하기 위함이다.
ExceptionResolver은 예외 상태 코드를 변환하거나 뷰 템플릿을 처리하거나 API응답을 처리할 때 사용한다.
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : ExceptionResolver 사용하기(1) (0) | 2022.03.06 |
---|---|
[Spring Boot] : HandlerExceptionResolver 활용하기 (0) | 2022.03.05 |
[Spring Boot] : API 예외 처리 스프링 부트 기본 오류 처리 (0) | 2022.03.03 |
[Spring Boot] : API 예외 처리 기본 체크하기 (0) | 2022.03.02 |
[Spring Boot] : BasicErrorController가 model에 담는 정보 (0) | 2022.03.01 |
댓글