On Saturday, 4 October 2014 at 04:29:06 UTC, ketmar via
Digitalmars-d wrote:
It is tricky if the throw implies that the caller to the
cleanup should retry because of a timeout/deadlock
it shouldn't. exception during cleanup means "oh, i can't! i
really-really-really can't!", not "ok, i'm busy, try again
later."
Should or should not, you have to make do with what you get from
libraries. Network being temporarily unavailable is a good reason
to throw when freeing a networked resource...
Exceptions are made for recovery/retry/rollback.
if some badly designed API does that -- write a wrapper.
So you need semantic analysis to ensure nothrow.