본문 바로가기
Java/Spring

예외 처리 방법

by lms0806 2024. 7. 7.
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
반응형

'Java > Spring' 카테고리의 다른 글

Service에서 Argument 사용하기  (0) 2024.08.07
Spring boot에서의 logback 설정  (0) 2024.08.05
Http Method의 종류와 사용법  (0) 2022.03.15
스프링의 실행 순서  (0) 2022.03.11
Springboot + React.js를 쓸 경우  (0) 2021.11.16

댓글