Exception Propagation

예외는 호출 스택을 거슬러 처리자를 찾습니다

throw 이후의 흐름은 일반 반환과 다릅니다. 현재 함수가 멈추고, 지역 객체를 정리하며, 맞는 catch를 만날 때까지 위로 이동합니다.

1

문제 감지

더 이상 정상 결과를 만들 수 없는 지점에서 예외 객체를 준비합니다.

2

throw

현재 블록의 남은 문장은 실행하지 않고 예외 처리 경로로 전환합니다.

3

스택 풀기

지나온 함수의 지역 객체 소멸자가 호출되어 자원이 정리됩니다.

4

catch 선택

타입이 맞는 처리자를 찾으면 그 블록을 실행하고 이후 흐름을 이어갑니다.

RAII 정리는 소멸자에 맡깁니다.

스택 풀기 중에도 지역 객체의 소멸자가 호출되므로 파일, 메모리, 잠금은 객체 수명으로 관리합니다.

Unhandled 처리자를 못 찾으면 종료됩니다.

main까지 올라가도 맞는 catch가 없으면 std::terminate로 이어집니다.