cl catch throw unwind-protect