[Issue 19602] Under some circumstances: throwing Error subclasses unwinds without invoking dtors

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Jan 22 02:21:47 UTC 2019


Mathias LANG <pro.mathias.lang at gmail.com> changed:

           What    |Removed                     |Added
                 CC|                            |pro.mathias.lang at gmail.com
           Severity|critical                    |normal

--- Comment #2 from Mathias LANG <pro.mathias.lang at gmail.com> ---
This behavior is documented in the language specs since the very beginning of

In fact, there is currently a bug opened by Walter because dtors and `scope`
statements are executed: https://issues.dlang.org/show_bug.cgi?id=17494
In addition, there is a PR to fix said issue:

There is still value in catching `Error` though: as a last resort mesure:
catch, log & abort is one thing, and catching at the top of a thread/fiber to
avoid the program termination is another.

Note that if `nothrow` applied to Error, the attribute would be essentially
useless: `assert`, `new`, `switch`, slice casts and many other things could not
be `nothrow`.


More information about the Digitalmars-d-bugs mailing list