문제 감지
더 이상 정상 결과를 만들 수 없는 지점에서 예외 객체를 준비합니다.
throw 이후의 흐름은 일반 반환과 다릅니다. 현재 함수가
멈추고, 지역 객체를 정리하며, 맞는 catch를 만날 때까지
위로 이동합니다.
더 이상 정상 결과를 만들 수 없는 지점에서 예외 객체를 준비합니다.
throw현재 블록의 남은 문장은 실행하지 않고 예외 처리 경로로 전환합니다.
지나온 함수의 지역 객체 소멸자가 호출되어 자원이 정리됩니다.
catch 선택타입이 맞는 처리자를 찾으면 그 블록을 실행하고 이후 흐름을 이어갑니다.
스택 풀기 중에도 지역 객체의 소멸자가 호출되므로 파일, 메모리, 잠금은 객체 수명으로 관리합니다.
main까지 올라가도 맞는 catch가 없으면
std::terminate로 이어집니다.