BackEnd/스프링 MVC

스프링 부트 - ExceptionResolver

연향동큰손 2025. 1. 9. 13:44

스프링 부트에서 제공하는 ExceptionResolver

  1. ExceptionHandlerExceptionResolver - @ ExceptionHandler를 처리함, API 예외 처리는 대부분 이 기능으로 해결한다.
  2. ResponseStatusExceptionResolver - HTTP 상태 코드를 지정해준다
  3. DefaultHandlerExceptionResolver - 스프링 내부 기본 예외를 처리한다

 


 

 

ResponseStatusExceptionResolver

 

 

1. @ResponseStatus 사용하여 예외 처리

package com.example.exception.Exception;


import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

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

}

 

위 코드에서는 @ResponseStatus에서 오류코드를 400(BAD_REQUEST)로 변경하고 오류 메시지도 포함하였다.

 

 

<컨트롤러>

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

 

 

 

실행 결과

500오류가 아닌 400오류로 나타나는 것을 확인 가능

 

 

2. ResponseStatusException을 이용한 예외처리

 

@GetMapping("/api/response-status-ex2")
public String responseStatusEx2(){
    throw new ResponseStatusException(HttpStatus.NOT_FOUND,"error.bad",new IllegalArgumentException());
}

 

 

500오류가 아닌 404오류로 나타나는 것을 확인 가능

 

 

 

DefaultHandlerExceptionResolver

 

DefaultHandlerExceptionResolver는 스프링 내부에서 발생하는 예외를 처리해 준다.

 

@GetMapping("/api/default-handler-ex")
public String defaultException(@RequestParam("data") Integer data) {
    return "ok";
}

 

data를 정수가 아닌 문자열로 보내면 400(Bad Request)에러를 보낸다.

 

 

 

@ExceptionHandler 사용하는 예외처리 ==> 다음 게시물에서 포스팅 예정

'BackEnd > 스프링 MVC' 카테고리의 다른 글

포맷터 - Formatter , @NumberFormat, @DateTimeFormat  (0) 2025.01.10
@ExceptionHandler  (0) 2025.01.09
HandlerExceptionResolver  (0) 2025.01.07
스프링 오류페이지  (0) 2025.01.07
스프링 인터셉터 - 인증 체크  (0) 2025.01.05