본문 바로가기

개발일지

20231227 - 예외처리

스프링 프레임워크에서는 @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