On Sunday, 5 October 2014 at 23:01:48 UTC, Walter Bright wrote:
Definitely unwinding may or may not happen from Error throws, "nothrow" functions may throw Errors, and optimizers need not account for Errors being thrown.
This is the real concern. If an Error is thrown out of a nothrow function that contains a synchronized block, for example, the mutex might still be locked. So the only viable option is to terminate, even for something theoretically recoverable like a divide by zero or an OOME.
