코딩/Spring
[Spring] 스프링 예외 처리 방법 2가지(@ExceptionHandler, @ControllerAdvice)
it 끄적이기
2022. 5. 5. 20:01
스프링부트에서는 @ControllerAdvice와 @ExceptionHandler 어노테이션을 사용하여 전역적인 예외 처리를 할 수 있습니다. 이를 통해 각각의 컨트롤러에서 예외 처리를 하지 않아도 되며, 예외 처리 로직의 중복을 제거할 수 있습니다.
1. @ControllerAdvice
- @ControllerAdvice 어노테이션을 사용하여 공통 예외 처리를 수행하는 클래스를 정의합니다.
- 이 클래스에는 @ExceptionHandler 어노테이션을 사용하여 예외 처리 메서드를 정의합니다.
- @ExceptionHandler 어노테이션을 사용하여 예외 처리 메서드에 처리할 예외 클래스를 지정할 수 있습니다.
2. @ExceptionHandler
- @ExceptionHandler 어노테이션을 사용하여 예외 처리 메서드를 정의합니다.
- 이 어노테이션을 사용한 메서드는 해당 예외가 발생했을 때 호출됩니다.
- 메서드 파라미터에는 예외 클래스 타입을 지정할 수 있습니다.
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleException(Exception e) {
ErrorResponse errorResponse = new ErrorResponse("500", e.getMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
@ExceptionHandler(UserNotFoundException.class)
public ResponseEntity<ErrorResponse> handleUserNotFoundException(UserNotFoundException e) {
ErrorResponse errorResponse = new ErrorResponse("404", e.getMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.NOT_FOUND);
}
}