## 19.3.3 Stack Unwinding (cont.)

- C++ unwinds call stack in search of a try block to handle the exception
- Before each function is terminated, destructors are called on all stack variables
- First-class types don't have destructors:

  >     Product* p = new Product();
  >     if (p->read())
  >     {
  >        . . .
  >     }
  >     delete p; // Never executes if read throws an exception

prev |top |next