throw는 예외 객체를 만들고 복구 경계까지 흐름을 옮긴다

예외 던지기는 점프 하나가 아니라 객체 생성, 스택 풀림, 타입 매칭이 이어지는 과정이다.

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

핵심 throw는 실패를 숨기는 장식이 아니라 복구 가능한 위치까지 제어를 운반하는 장치다.