예외 처리

소멸자에서는 예외가 빠져나가면 안 된다. 만약 소멸자 안에서 호출된 함수가 예외를 던질 가능성이 있다면, 어떤 예외이든지 소멸자에서 모두 처리해야 한다. 어떤 클래스의 연산이 진행되다가 던진 예외에 대해 사용자가 반응해야 할 필요가 있다면, 해당 연산을 제공하는 함수는 반드시 소멸자가 아니어야 한다. 예외가 소멸자를 떠나지 않게 하자 소멸자로부터 예외가 터져 나가는 경우를 C++ 언어에서 막는 것은 아니지만, 실제 상황을 보면 확실히 막아야 하긴 하다. class Widget { public: ... ~Widget () { ... } // 이 함수에서 예외가 발생한다고 가정 }; void doSomething() { std::vector v; ... } // v 자동 소멸 vector 타입의 객체 v는 ..