Stack Unwinding

예외 전파와 스택 해제

던져진 예외가 맞는 catch를 찾는 동안 호출 스택이 풀리고, 각 프레임의 지역 객체는 소멸자를 통해 정리됩니다.

throw

functionC

예외를 던진 뒤 남은 문장은 실행하지 않습니다.

pass

functionB

처리 블록이 없으면 호출자에게 예외를 넘깁니다.

catch

functionA

타입이 맞는 catch가 예외 객체를 받아 처리합니다.

resume

이후 흐름

처리가 끝나면 try-catch 다음 문장부터 실행됩니다.

정리 보장

스택에 있던 객체의 소멸자는 호출되므로 파일, 락, 메모리는 RAII 타입으로 묶는 것이 안전합니다.

미처리 예외

마지막까지 맞는 catch가 없으면 프로그램은 std::terminate로 종료됩니다.