@RestControllerAdvice 를 사용해서 모든 RestController 의 예외를 공통화해서 처리해주세요!
이 어노테이션은 Spring MVC에서 제공하는 어노테이션이고
전역적인 예외 처리를 담당하고 있다.
클래스에 적용시키면 해당 클래스는 전역 예외 핸들러로 작동하게 된다.
@RestControllerAdvice
class GlobalExceptionHandler {
@ExceptionHandler(ModelNotFoundException::class)
fun handleModelNotFoundException(e: ModelNotFoundException) : ResponseEntity<ErrorResponse> {
return ResponseEntity
.status(HttpStatus.NOT_FOUND)
.body(ErrorResponse(message = e.message))
}
위와 같이 처리할 경우, ModelNotFoundException이 발생하면 HTTP 상태 코드와 함께
예외 메시지를 응답한다.
핸들러는 모든 컨트롤러에서 발생하는 Exception을 처리하기 때문에
아래와 같은 이점들이 존재한다.