IllegalArgumentException은 400 Bad Request인가?
백엔드
IllegalArgumentException은 400 Bad Request인가?
두줄요약
IllegalArgumentException을 무조건 400으로 매핑하면 서버 오류를 클라이언트 문제로 오인할 수 있습니다. 명백한 클라이언트 오류는 커스텀 예외로 분리해 4xx와 5xx를 구분하는 것이 좋습니다.
핵심 내용
- 4xx는 클라이언트 오류, 5xx는 서버 오류로 구분해야 하는 이유 정리
- IllegalArgumentException은 클라이언트 입력 오류뿐 아니라 서버 내부 버그로도 발생 가능
- 범용 예외를 400으로 고정 매핑하면 장애 원인 파악과 운영 대응이 늦어질 수 있음
선택 이유
- 400이 필요한 경우에는 BusinessException 같은 커스텀 예외를 정의해 명확히 구분
- 커스텀 예외와 하위 예외를 400으로 매핑해 비즈니스 오류를 표현
적용해볼 점
- 예측 불가 예외는 500으로 두고, 명백한 클라이언트 오류만 4xx로 분리
- 모니터링 관점에서 4xx 오탐과 5xx 누락을 줄이는 상태 코드 전략 수립
