[java] 자바 스프링 부트 에러 처리 방법
자바 스프링 부트 애플리케이션을 개발할 때 예외 처리는 매우 중요합니다. 애플리케이션에서 발생하는 예외를 적절하게 처리하고, 사용자에게 명확한 에러 메시지를 보여주는 것이 중요합니다. 이번 포스트에서는 자바 스프링 부트 애플리케이션에서 에러를 처리하는 방법에 대해 알아보겠습니다.
1. @ControllerAdvice를 사용한 전역 예외 처리
자바 스프링 부트에서는 @ControllerAdvice
어노테이션을 사용하여 애플리케이션 전역에서 예외를 처리할 수 있습니다. 이 어노테이션을 사용하면 여러 컨트롤러에서 발생하는 예외를 일관된 방식으로 처리할 수 있습니다.
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
// 에러 메시지를 로깅하거나 특정 응답코드와 함께 에러 메시지를 반환할 수 있음
return new ResponseEntity<>("An error occurred: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
@ExceptionHandler(MyCustomException.class)
public ResponseEntity<String> handleCustomException(MyCustomException e) {
// 사용자 정의 예외에 대한 처리 로직
return new ResponseEntity<>("An error occurred: " + e.getMessage(), HttpStatus.BAD_REQUEST);
}
}
위의 예제에서 @ControllerAdvice
어노테이션이 적용된 GlobalExceptionHandler
클래스는 @ExceptionHandler
어노테이션을 사용하여 특정 예외를 처리하는 메서드를 정의합니다.
2. 커스텀 예외 클래스 정의
애플리케이션에서 예외를 명확하게 구분하여 처리하기 위해 커스텀 예외 클래스를 정의할 수 있습니다.
public class MyCustomException extends RuntimeException {
public MyCustomException(String message) {
super(message);
}
}
위의 예제에서 MyCustomException
클래스는 RuntimeException
을 상속받아 사용자가 정의한 메시지를 가지고 있는 예외를 정의합니다.
결론
자바 스프링 부트 애플리케이션에서는 @ControllerAdvice
를 사용하여 전역 예외를 처리하고, 커스텀 예외 클래스를 정의하여 예외를 명확하게 구분할 수 있습니다. 이러한 방식으로 애플리케이션에서 발생하는 예외를 효과적으로 처리하고 사용자에게 명확한 에러 메시지를 제공할 수 있습니다.
참고 문헌: