스프링 프레임워크에서는 @ControllerAdvice 나 @RestControllerAdvice 어노테이션을 통해 넓은 범위를 컨트롤하며 예외처리를 할 수 있다. 둘의 차이는 RestController는 Json데이터로 응답값을 반환한다는 점이다. 이를 통해 예외처리를 한다면 클래스 하나로 모든 컨트롤러의 예외처리를 수행할 수 있으며, try-catch 문을 사용하지 않아도 되므로 코드의 가독성 또한 좋아진다.
코드를 살펴보자면,
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(NoSuchElementException.class)
protected ResponseEntity< ApiResponse > handlerNoSuchElementFoundException( NoSuchElementException ex ) {
HttpStatus hs = HttpStatus.NOT_FOUND;
final ErrorResponse errorResponse = ErrorResponse.create( ex, hs, ex.getMessage() );
return ResponseEntity.status( hs ).body( ApiResponse.fail( errorResponse ) );
}
@ExceptionHandler(IllegalArgumentException.class)
...
}
@ExceptionHandler 의 설정된 예외가 터질 경우 해당 메서드를 수행한다. 지정해놓지 않을 경우 모든 예외를 잡게 된다. 이처럼 여러 가지 예외들을 @ExceptionHandler에 지정해 놓으면 간단하게 예외처리가 가능하다.
'개발일지' 카테고리의 다른 글
20240101 - @Transactional (0) | 2024.01.02 |
---|---|
20231228 - 스프링 S3 사용하기 (1) | 2023.12.29 |
20231226 - 다대다 관계와 중간테이블 (0) | 2023.12.26 |
20231226 - 프로그래머스/140108 (0) | 2023.12.26 |
20231221 - cascade, orphanRemoval (1) | 2023.12.21 |