본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : ExceptionResolver 사용하기(1)

by 오주현 2022. 3. 6.
반응형

ExceptionResolver 사용하기(1)

스프링 부트가 기본적으로 제공하는 ExceptionResolver는 HandlerExceptionResolverComposite에 ExceptionHandlerExceptionResolver → ResponseStatusExceptionResolver → DefaultHandlerExceptionResolver 순으로 등록된다.

 

ExceptionHandlerExceptionResolver는 @ExcpetionHandler을 처리한다.

ResponseStatusExceptionResolver는 HTTP 상태 코드를 지정한다.

DefaultHandlerExceptionResolver는 스프링 내부 기본 예외츨 처리한다.

 

@ResponseStatus(code = HttpStatus.BAD_REQUEST, reason = "error.bad")
public class BadRequestException extends RuntimeException{
}

BadRequestException예외가 컨트롤러를 넘어가면 ResponseStatusExceptionResolver예외가 해당 어노테이션을 확인해 오류 코드를 변경하고 메시지도 담아준다.

 

@GetMapping("/api/response-status-ex1")
public String responseStatusEx1() {
    throw new BadRequestException();
}

ApiExceptionController에 추가해 준다.

 

ResponseStatusExceptionResolver를 보면 sendError을 호출하고 WAS에서 다시 오류 페이지를 내부에 요청하게 된다.

@ResponseStatus는 개발자가 직접 변경할 수 없는 예외엔 적용이 불가능하다. 추가로 어노테이션을 사용하기 때문에 동적으로 변경하는 것도 어려운데 이때 ResponseStatusException예외를 사용하면 된다.


스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.

반응형

댓글