17.4. Stack Unwinding
When an exception is thrown but not caught in a particular scope, the function call stack is “unwound,” and an attempt is made to
catch the exception in the next outer
catch block. Unwinding the function call stack means that the function in which the exception was not caught terminates, all local variables that have completed intitialization in that function are destroyed and control returns to the statement that originally invoked that function. If a
try block encloses that statement, an attempt is made to
catch the exception. If a
try block does not enclose that statement, stack unwinding occurs again. If no
catch handler ever catches this exception, the program terminates. The program of Fig. 17.4 demonstrates ...