728x90
반응형
ExceptionResolver
- 스프링 부트에서 사용하는 Exception Resolver 를 알아보자
- ExceptionHandlerExceptionResolver
- @ExceptionHandler 를 처리한다. 가장많이 쓴다. - ResponseStatusExceptionResolver
- @ResponseStatus(value = HttpStatus.NOT_FOUND) - DefaultHandlerExceptionResolver
- 우선 순위가 가장 낮다.
- 스프링 내부 기본 예외를 처리한다.
ResponseStatusExceptionResolver
- 예외에 따라서 HTTP 상태 코드를 지정해줄수 있다.
- @Response, ResponseStatusException 예외 처리
@ResponseStatus(code = HttpStatus.BAD_REQUEST, reason = "잘못된 요청 오류")
public class BadRequestException extends RuntimeException {}
- BadRequestException 예외가 컨트롤러 밖으로 넘어가면 ResponseStatusExceptionResolver 가
해당 어노테이션을 확인한다. 그리고 오류코드를 지정해준 코드로 변경한다.
ResponseStatusException
@Response 는 직접 변경 할 수 없는 예외에 적용 불가능하다.
하지만 ResponseStatusException 으로 사용할수 있다.
@GetMapping("/api/response-status-ex2")
public String responseStatusEx2() {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "error.bad", new
IllegalArgumentException());
}
DefaultHandlerExceptionResolver
- 스프링 내부에서 발생 하는 예외를 해결 한다.
- 파라미터 바인딩 타입이 맞지 않으면 TypeMismatchException 발생한다.
대부분 사용자의 오류이지만 예외 발생시 WAS 까지 올라가 500 으로 떨어진다. - DefaultHandlerExceptionResolver 를 통해서 해결이 가능하다.
- 코드를 보면 이것 역시 400 으로 변경해주는 코드가 있다.
protected ModelAndView handleServletRequestBindingException(ServletRequestBindingException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException {
response.sendError(400, ex.getMessage());
return new ModelAndView();
}
참고:
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard
728x90
반응형
'Spring > spring mvc 2 스터디' 카테고리의 다른 글
[Spring] API 예외 처리(ExceptionHandler) (0) | 2022.07.02 |
---|---|
[Spring] API 예외 처리(HandlerExceptionResolver) (0) | 2022.06.26 |
[Spring] 예외 처리 이론 및 기초 (0) | 2022.06.25 |
[Spring] Filter Vs Interceptor (0) | 2022.06.01 |
[Spring] Interceptor (0) | 2022.06.01 |
댓글