stack unwinding
Destroying local objects, frame by frame, as an exception travels up.
During unwinding each exited scope's automatic objects are destroyed in reverse order, so RAII objects release their resources even though the function never returned normally.