우아하게 에러 처리하기
서버에서 에러가 발생했을 때 클라이언트에게 지저분한 자바 에러 스택 트레이스를 그대로 노출하는 것은 최악의 설계입니다. 스프링에서는 @RestControllerAdvice를 활용하여 프로젝트 내에서 발생하는 모든 예외를 한 곳에서 가로채어 깔끔한 JSON 응답으로 통일할 수 있습니다.
| 어노테이션 |
설명 및 역할 |
@RestControllerAdvice |
모든 컨트롤러에서 발생하는 예외를 한 클래스에서 전역적으로 처리하게 해주는 마법의 어노테이션입니다. |
@ExceptionHandler |
특정 예외(예: IllegalArgumentException.class)가 발생했을 때 실행될 메서드를 지정합니다. |
실전 코딩: 전역 에러 핸들러 작성
GlobalExceptionHandler.java
package com.minstudio.demo.exception;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class GlobalExceptionHandler {
// 아이디를 찾을 수 없는 등의 기본 예외 처리
@ExceptionHandler(IllegalArgumentException.class)
public ResponseEntity handleIllegalArgument(IllegalArgumentException ex) {
ErrorResponse response = new ErrorResponse("400", ex.getMessage());
return ResponseEntity.badRequest().body(response);
}
}
{
"code": "400",
"message": "존재하지 않는 유저입니다."
}