[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를 사용하여 전역 예외를 처리하고, 커스텀 예외 클래스를 정의하여 예외를 명확하게 구분할 수 있습니다. 이러한 방식으로 애플리케이션에서 발생하는 예외를 효과적으로 처리하고 사용자에게 명확한 에러 메시지를 제공할 수 있습니다.

참고 문헌: