숙련 Spring

정예진·2026년 4월 29일

Spring

목록 보기
15/19

2026.04.29

예외처리 메커니즘 & 예외처리 리졸버

전체 흐름

클라이언트 요청
-> Dispatcher Servlet (어떤 컨트롤러가 처리할 수 있지?)
-> Controller (API 매핑)
-> Service (비즈니스 로직 수행)
-> 예외 발생! (throw new OrderNotFoundException())
-> Controller 통과 (try-catch가 없어서 못 잡으니까)
-> Dispatcher Servlet (예외 수신 -> Resolver 호출)
-> Resolver (어떤 핸들러가 처리할 수 있지?)
-> GlobalExceptionHandler (예외 처리 -> 에러 응답 생성)
-> 클라이언트에게 바로 전송

HandlerExceptionResolver(인터페이스)

DS가 들고 있는 Resolver 목록을 우선순위 순서대로 처리 가능 여부를 확인함.

  1. ExceptionHandlerExceptionResolver (1순위)

    • @ExceptionHandler 붙은 메서드를 찾아서 실행
    • 실무에서 가장 많이 쓰는 방식
    • @ControllerAdvice / @RestControllerAdvice 클래스 안에서 동작
  2. ResponseStatusExceptionResolver (2순위)

    • @ResponseStatus 어노테이션 달린 예외 처리
    • 해당 HTTP 상태코드 세팅해서 응답
  3. DefaultHandlerExceptionResolver (3순위)

    • 스프링 내부 예외 처리 (지원 안 하는 HTTP 메서드, 미디어 타입 등)
    • 응답 본문 없이 상태코드만 반환
    • 클라이언트 입장에서 뭐가 문제인지 모름 -> 실무에서 직접 핸들러로 잡아주는 이유

아무도 못 잡으면?
-> WAS(톰캣)로 올라가서 500 에러 페이지 출력

0개의 댓글