I know the rule is to NEVER throw one during a destructor, and I understand why. I would not dare do it. But even the C++ Faq Lite says that this rule is good 99% of the tim
You can throw an exception from a destructor if this destructor is not called automatically during stack unwinding, or throwing the exception will result in a call of terminate(). To determine if it is safe to throw exceptions from a destructor, use standard function uncaught_exception(); if it returns false, it is safe to throw an exception