On 10/5/2014 4:28 PM, Sean Kelly wrote:
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.

Divide by zero is not recoverable since you don't know why it occurred. It could be the result of overflowing a buffer with 0s. Until a human debugs it and figures out why it happened, it not recoverable.

Because it could be the result of corruption like buffer overflows, the less code that is executed between the detection of the bug and terminating the program, the safer the program is. Continuing execution may mess up user data, may execute injected malware, etc.

Reply via email to