Java/Spring
예외 처리 방법
lms0806
2024. 7. 7. 20:34
728x90
반응형
Spring boot를 사용하시면, 다음과 같은 방법들로 api 요청을 보냅니다.
@PostMapping({"/api"})
@GetMapping({"/get/api"})
만약 다음과 같이 요청이 가능한 api가 있을 때, 없는 api를 요청할 경우, 500에러를 발생하게 됩니다.
해당 에러에 대하여 특정 반환값 or 페이지를 출력하기 위해선 500 에러를 잡아서 다른 response를 보내야 합니다.
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(HttpMessageNotReadableException.class)
public ResponseEntity<Object> handleHttpMessageNotReadableException() {
return new ResponseEntity<>("500 error", HttpStatus.BAD_REQUEST);
}
}
그런 경우 GlobalExceptionHandler라는 class를 만든 후, @ExceptionHandler(HttpMessageNotReadableException.class)을 통하여 특정 에러케이스를 대신 처리하도록 하면 됩니다.
해당 방식은 없는 api를 요청할 경우 "500 error"라는 메시지를 response로 전달하도록 하는 예시 입니다.
그러면, 404에러 또한 다음과 같은 방법으로 가능할까요?
404 에러는 Spring boot에서 처리하도록 되어져 있습니다.
그러하여, 다음과 같은 방식과 함께 application.yaml에 다음과 같이 추가로 작성해야 합니다.
spring:
mvc:
throw-exception-if-no-handler-found: true
web:
resources:
add-mappings: false
@ExceptionHandler(NoHandlerFoundException.class)
public ResponseEntity<Object> handleNoHandlerFoundException() {
return new ResponseEntity<>("404 error", HttpStatus.NOT_FOUND);
}
다음과 같이 작성한 경우, 404 error, 500 error 모두 해결할 수 있습니다.
728x90
반응형