Free Lines Arrow
본문 바로가기
Spring/spring mvc 2 스터디

[Spring] API 예외 처리(ExceptionResolver)

by skahn1215 2022. 7. 2.
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

 

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의

웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있

www.inflearn.com

 

728x90
반응형

댓글