-
API 예외처리 - 스프링 ExceptionResolver스프링/스프링 MVC 패턴 2023. 3. 5. 15:10
BadRequestException.class를 새로 생성했다.
@ResponseStatus(code = HttpStatus.BAD_REQUEST, reason = "잘못된 요청 오류") public class BadRequestException extends RuntimeException { }
@ResponseStauts 애노테이션은 상태를 설정할 수 있게 도와주는 애노테이션이다.
code = HttpStauts.BAD_REQUEST를 통해 400 에러로 변경시켰다.
@GetMapping("/api/response-status-ex1") public String responseStatusEx1() { throw new BadRequestException(); }
컨트롤러에서 url을 매핑해주고 throw를 통해 BadRequestException을 넘겨주었다. 결과는 500 에러가 아니라 400에러가 나오게 되었다.
BadRequestException.calss에서 HttpStatus.NOT_FOUND로 바꾸면 404 Not Found 에러가 나오게 된다.
하지만 위의 애노테이션을 이용한 방식은 동적으로 변경하기도 어렵고 제약이 있다.
@GetMapping("/api/response-status-ex2") public String responseStatusEx2() { throw new ResponseStatusException(HttpStatus.NOT_FOUND, "error.bad", new IllegalArgumentException()); }
컨트롤러에 그냥 메서드 하나만 넣으면 알아서 예외처리를 해준다.
ResponseStatusException이라는 스프링에서 제공하는 기본 메서드에 (상태, 에러 메시지, 발생한 에러)를 넣으면 자동으로 해당 상태로 에러를 만들어준다.
404 에러로 잘 나온다.
'스프링 > 스프링 MVC 패턴' 카테고리의 다른 글
스프링 타입 컨버터 (0) 2023.03.07 스프링 API 예외처리 - @ExceptionHandler (대부분 쓰임) (0) 2023.03.05 API 예외처리 - HandlerExceptionResolver (0) 2023.03.05 스프링 부트의 오류 페이지 (0) 2023.03.03 스프링 인터셉터 (서블릿 필터 상위 기능) (0) 2023.03.01