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 어노테이션을 사용하면 예외 처리를 보다 쉽고 일관성 있게 구현할 수 있습니다.
'개발관련 > 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 |