← 질문 목록
#70깊이 0
체크 예외는 언제 API 계약에 넣는가?
호출자가 복구 전략을 세울 수 있고 반드시 처리 여부를 결정해야 할 때 체크 예외를 계약에 넣는다. 프로그래밍 오류에는 런타임 예외가 맞다.
| 기준 | 체크 예외 | 런타임 예외 |
|---|---|---|
| 컴파일러 | 처리·선언을 강제한다 | 강제하지 않는다 |
| 적합한 상황 | 예측 가능한 복구 | 계약 위반·버그 |
Exception의 하위 타입 중 RuntimeException이 아닌 예외는 체크 대상이다. Error와 런타임 예외는 컴파일러가 처리나 선언을 강제하지 않는다.
체크 예외를 너무 넓게 쓰면 호출 계층마다 의미 없는 catch와 throws가 퍼진다. 복구할 수 없으면 도메인 런타임 예외로 번역하되 원인을 보존한다.
예외를 경계에서 번역하면 저장소나 네트워크 구현을 API 밖으로 숨길 수 있다. 메시지와 원인, 복구 가능 여부를 계약에 명확히 둔다.