throw 표현식
오류 조건에서 예외 객체를 만들고 정상 return 경로를 즉시 중단한다.
throw된 예외는 현재 함수에서 처리되지 않으면 호출자 방향으로 올라가며, 빠져나가는 범위의 완전히 생성된 지역 객체를 소멸한 뒤 맞는 catch를 찾는다.
오류 조건에서 예외 객체를 만들고 정상 return 경로를 즉시 중단한다.
빠져나가는 블록의 완전히 생성된 지역 객체가 역순으로 소멸된다.
호출자 쪽 catch 중 타입 변환과 참조 바인딩이 맞는 처리기를 찾는다.
처리기가 없거나 unwind 중 소멸자가 다시 던지면 종료 경로로 간다.
catch를 값으로 받으면 slicing이 생길 수 있으므로 보통
const std::exception&처럼 참조로 받는다. 소멸자는
unwind 중 예외를 밖으로 내보내지 않는다.