스택을 풀 때 RAII 객체가 자원을 닫는다
예외가 지나가는 함수에서도 지역 객체 소멸자는 호출된다. 그래서 파일, 락, 메모리는 객체 수명에 묶어야 한다.
획득생성자에서 파일·락·메모리 확보
throw중간에 실패해 정상 반환을 건너뜀
소멸자스택 풀림 중 자동으로 자원 반납
catch정리된 상태에서 복구만 담당
| 자원 | 예외 시 동작 | 설계 결론 |
|---|---|---|
| fstream | 소멸자에서 파일 핸들을 닫는다 | 수동 close 의존을 줄임 |
| lock_guard | 블록을 벗어나며 뮤텍스를 푼다 | deadlock 위험 감소 |
| unique_ptr | 소멸자에서 메모리를 해제한다 | raw new/delete 피하기 |
| catch | 자원 정리보다 복구 판단에 집중한다 | 정리는 RAII가 담당 |
핵심 예외 안전성은 catch에서 치우는 것이 아니라, 소멸자가 자동으로 치우게 설계하는 것이다.