On Wed, 13 Jul 2016 13:50:00 +0000, ketmar wrote: > https://dlang.org/library/object/throwable.html > > "In principle, one should not catch Throwable objects that are not > derived from Exception, as they represent unrecoverable runtime errors. > Certain runtime guarantees may fail to hold when these errors are > thrown, making it unsafe to continue execution after catching them."
So this is two separate things coming together: 1) If the runtime is sufficiently borked, it might be unable to unwind the stack. 2) If the runtime detects that it is borked, it will throw something derived from Error. You could just as well say that *no* runtime function is guaranteed to be safe to call because the runtime could be in an invalid state without having detected it. It's merely slightly riskier when an Error has been thrown. Specific to stack unwinding, it's pretty isolated from the rest of the runtime.
