Spring MVC 2편 API 예외처리 활용

신재원·2023년 3월 8일
1

Spring MVC 2편

목록 보기
21/26

API 예외처리 - HandlerExceptionResolver 활용

  • 예외가 발생하면 WAS까지 예외가 던져지고, WAS에서 오류 페이지 정보를 찾아서 다시 /error를 호출하는 과정이 너무 번잡하다.

  • 📍ExceptionResolver를 활용하면 예외가 발생했을때 이런 복잡한 과정없이 여기에서 문제를 깔끔하게 해결할수있다.

  • 예시
    ( ExceptionResolver 클래스를 정의후 예외를 한번에 관리한다, Controller단 에서 예외가 발생하면 ModelAndView를 그냥 반환해준다)
  • 정리
    예외가 발생해도, 서블릿 컨테이너까지 예외가 전달되지 않고, 스프링 MVC에서 예외는 끝이난다.

🐱‍🏍 스프링이 제공하는 ExceptionResolver 1

  • 스프링의 HandlerExceptionResolverComposite에 다음순서로 등록되어있다.
    • ExceptionHandlerExceptionResolver
    • ResponseStatusExceptionResolver
    • DefalutHandlerExceptionResolver (우선 순위가 가장 낮다)

ExceptionHandlerExceptionResolver

: @ExceptionHandler을 처리한다. API 예외처리는 대부분 이기능으로 해결한다.

ResponseStatusExceptionResolver

HTTP 상태 코드를 지정해준다.
예 ) @ResponseStatus(value = HttpStatus.NOT_FOUND)

  • 두가지 경우를 처리해준다.
    • @ResponseStatus 가 달려있는 예외
    • ResponseStatusException 예외
  • 예시 (동적이게 사용할수는 없다) -- ResponseStatus
  • 예시 (동적이게 사용, 예외를 바로 바인딩한다) -- ResponseStatusException

DefalutHandlerExceptionResolver

스프링의 내부 기본 예외를 처리한다.

0개의 댓글