throw는 예외 객체를 만들고 복구 경계까지 흐름을 옮긴다
예외 던지기는 점프 하나가 아니라 객체 생성, 스택 풀림, 타입 매칭이 이어지는 과정이다.
객체 생성실패 이유를 담은 예외 객체를 만든다
현재 흐름 종료throw 아래 정상 문장은 실행하지 않는다
스택 풀림호출자를 거슬러 올라가며 지역 객체 정리
catch 매칭호환 타입을 만나면 복구 코드 실행
| 단계 | 의미 | 주의 |
|---|---|---|
| throw 값 | 예외 객체의 타입이 복구 방식을 결정한다 | 의미 없는 숫자보다 타입을 사용 |
| 전파 | 현재 함수에 catch가 없으면 호출자로 이동한다 | 남은 문장은 실행되지 않음 |
| 정리 | 스택 객체의 소멸자가 호출된다 | 자원은 RAII에 맡김 |
| 미처리 | 끝까지 catch를 못 찾으면 terminate | 경계 catch를 설계 |
핵심 throw는 실패를 숨기는 장식이 아니라 복구 가능한 위치까지 제어를 운반하는 장치다.