반응형
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편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : 스프링 부트 이해 (0) | 2022.03.08 |
---|---|
[Spring Boot] : ExceptionResolver사용하기(2) (0) | 2022.03.07 |
[Spring Boot] : HandlerExceptionResolver 활용하기 (0) | 2022.03.05 |
[Spring Boot] : HandlerExceptionResolver 시작하기 (0) | 2022.03.04 |
[Spring Boot] : API 예외 처리 스프링 부트 기본 오류 처리 (0) | 2022.03.03 |
댓글