[스프링] 예외 처리 방법
스프링 애플리케이션을 개발하다보면 예외 처리는 필연적으로 발생하는 문제입니다. 스프링은 이를 다루기 위한 다양한 방법을 제공합니다.
1. @ControllerAdvice와 @ExceptionHandler를 사용한 예외 처리
@ControllerAdvice
애노테이션을 사용하면 전역 수준에서 예외를 처리할 수 있습니다. @ExceptionHandler
애노테이션과 함께 사용하여 특정 예외에 대한 처리 로직을 정의할 수 있습니다.
예시:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleException(Exception ex) {
// 예외 처리 로직
return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
2. ResponseEntity를 활용한 응답 처리
ResponseEntity
를 사용하면 HTTP 응답 코드와 함께 데이터를 반환할 수 있어, 예외 상황에 따른 적절한 응답을 제공할 수 있습니다.
예시:
@GetMapping("/resource")
public ResponseEntity<Resource> getResource() {
// 리소스 가져오기
if (resource == null) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok(resource);
}
3. @RestControllerAdvice를 활용한 RESTful 서비스 예외 처리
@RestControllerAdvice
애노테이션을 사용하여 RESTful 서비스에서 예외를 처리할 수 있습니다. JSON 형태로 예외 정보를 반환할 수 있어 클라이언트에서 바로 처리할 수 있습니다.
예시:
@RestControllerAdvice
public class RestGlobalExceptionHandler {
@ExceptionHandler(EntityNotFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public ErrorResponse handleEntityNotFoundException(EntityNotFoundException ex) {
// 예외 처리 로직
return errorResponse;
}
}
스프링에서의 예외 처리 방법에 대해 알아보았습니다. 이러한 기능들을 활용하여 안정적이고 효율적인 애플리케이션을 개발할 수 있습니다.
참고: