More exception cleanups

There were some cases in which a destructor might have thrown an
exception, which is poor behaviour.  We're now catching any possible
exceptions in destructors, and just eating them.