예외 타입은 복구 코드가 판단할 정보를 담아야 한다
C++은 여러 값을 던질 수 있지만, A급 예외 설계는 catch가 의미를 읽을 수 있는 타입을 고르는 일이다.
primitive숫자·문자만으로는 실패 의미가 약함
std::exception표준 메시지와 공통 부모 제공
custom type도메인별 복구 정보를 구조화
catch policy구체 타입부터 넓은 타입 순서로 배치
| 던질 타입 | 복구 코드가 읽는 정보 | 판정 |
|---|---|---|
| int/string | 원인과 범위가 코드 밖 약속에 의존 | 작은 예제 외에는 약함 |
| runtime_error | 메시지와 표준 부모 타입을 제공 | 기본 선택지 |
| custom exception | 필드로 원인·위치·복구 힌트 전달 | 업무 규칙에 적합 |
| catch(...) | 타입 정보를 잃은 마지막 방어선 | 로그 후 재전파 고려 |
핵심 좋은 예외 타입은 “무슨 일이 났는가”와 “어떻게 복구할 것인가”를 catch에 전달한다.