본문 바로가기

개발관련/SPRINGBOOT

Springboot ExceptionHandler

728x90

Spring Boot의 @ExceptionHandler 어노테이션은 예외 처리를 단순화하는 데 사용됩니다. 이 어노테이션을 사용하여 컨트롤러 내에서 발생하는 예외를 캐치하고 처리할 수 있습니다.

@ExceptionHandler 어노테이션은 특정 예외 클래스 또는 그 서브클래스를 지정하여 해당 예외가 발생할 경우 호출될 메서드를 지정합니다. 이 메서드는 일반적으로 @Controller 또는 @RestController 어노테이션이 지정된 클래스 내에 작성됩니다.

예를 들어, 다음과 같이 @ExceptionHandler 어노테이션을 사용하여 NumberFormatException 예외를 처리하는 메서드를 작성할 수 있습니다:

@RestController
public class MyController {

    @ExceptionHandler(NumberFormatException.class)
    public ResponseEntity<String> handleNumberFormatException(NumberFormatException ex) {
        // 예외 처리 로직 작성
        return new ResponseEntity<>("Invalid number format", HttpStatus.BAD_REQUEST);
    }

    // 다른 메서드들...
}

위의 예제에서 handleNumberFormatException 메서드는 NumberFormatException이 발생할 때 호출됩니다. 메서드는 NumberFormatException을 매개변수로 받고, 해당 예외를 처리하고 클라이언트에게 적절한 HTTP 상태 코드와 함께 응답을 반환합니다.

@ExceptionHandler 어노테이션을 사용하면 여러 개의 예외를 처리하는 메서드를 정의할 수도 있습니다. 예를 들어, 다음과 같이 여러 예외를 처리하는 메서드를 작성할 수 있습니다:

@RestController
public class MyController {

    @ExceptionHandler({NumberFormatException.class, NullPointerException.class})
    public ResponseEntity<String> handleNumberFormatException(Exception ex) {
        // 예외 처리 로직 작성
        return new ResponseEntity<>("Invalid input", HttpStatus.BAD_REQUEST);
    }

    // 다른 메서드들...
}

위의 예제에서 handleNumberFormatException 메서드는 NumberFormatException 또는 NullPointerException이 발생할 때 호출됩니다. 매개변수로 Exception을 사용하여 여러 예외를 한 번에 처리할 수 있습니다.

@ExceptionHandler 어노테이션은 일반적으로 컨트롤러 클래스 내부에 작성되지만, @ControllerAdvice 어노테이션이 지정된 별도의 클래스에 작성하여 모든 컨트롤러에서 공통으로 예외 처리 로직을 사용할 수도 있습니다. 이 방법을 사용하면 예외 처리 로직을 중복해서 작성하지 않고 재사용할 수 있습니다.

Spring Boot의 @ExceptionHandler 어노테이션을 사용하면 예외 처리를 보다 쉽고 일관성 있게 구현할 수 있습니다.

728x90

'개발관련 > SPRINGBOOT' 카테고리의 다른 글

JPA Dirty checking  (0) 2023.06.18
Test Code에서 tearDown이란?  (0) 2023.06.17
@Transactional  (0) 2023.06.17
AP로그와 JBoss로그  (0) 2023.06.15
SPRINGBOOT  (0) 2023.06.13