The Back Side of Exceptions
This article illustrates the risks of exceptions being thrown where it is generally not expected, e.g., a library function or a finally block, and shows ways to prevent some insidious errors (such as inconsistency of program data or loss of exception information).