REST API의 전역 예외 처리 전략
작성일: 2025.09.06
예외처리에 대한 고찰
1. RestControllerAdvice와 ExceptionHandler의 역할은?
@RestControllerAdvice는 모든 컨트롤러에서 발생한 예외를
전역(글로벌)에서 처리하는 스프링 컴포넌트
@ExceptionHandler는 특정 예외가 발생했을 때 실행할 메서드를 지정- 목적:
- 중복 코드 줄이고,
- 에러 응답 포맷 통일
- 유지보수 및 협업에 유리
2. 왜 GlobalExceptionHandler를 사용하는가? (장점)
- 다양한 예외 상황을 일관된 에러 응답 포맷으로 반환
- 코드 중복 줄이고, 한 곳에서 예외 로직 관리
- API 명세, 프론트 분기처리, 디버깅, 장애대응 모두 유리
3. CustomException을 따로 만든 이유는?
- 비즈니스 로직에서 발생시키는 예외를 에러코드/메시지/상태값과 함께 관리하기 위함
- 프론트엔드에서 상황별로 쉽게 분기/처리 가능
4. Spring이 자동으로 던지는 표준 예외는 뭐가 있나?
MethodArgumentNotValidException: @Valid 유효성 검증 실패MissingServletRequestParameterException: 필수 파라미터 누락MethodArgumentTypeMismatchException: 파라미터 타입 불일치- 그 외에도 많은 표준 예외들이 있음
5. 왜 이런 표준 예외까지 따로 핸들러를 만들어야 하나?
- Spring 기본 에러 응답은 단순(불친절, 일관성X)
- 내 프로젝트에 맞는 에러코드/메시지/구조로 응답하려면
각 예외별로 직접 핸들러 작성 필요
6. 모든 예외를 커스텀으로만 처리하면 안 되나?
- 불가능!
(ex: @Valid 실패, 파라미터 에러 등은 직접 try-catch 할 수 없음.
Spring이 자동으로 던지는 예외이기 때문)