digitalmars.D.bugs - [Issue 23973] New: static constructors should have to be nothrow
- d-bugmail puremagic.com (22/22) Jun 05 2023 https://issues.dlang.org/show_bug.cgi?id=23973
https://issues.dlang.org/show_bug.cgi?id=23973 Issue ID: 23973 Summary: static constructors should have to be nothrow Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: critical Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: atila.neves gmail.com Since initialisation order is undefined, throwing in a static constructor can end up not having a stack trace (the runtime isn't initialised yet), or probably worse (the GC insn't initialised yet). Also, there's nothing a user can actually do to recover since it happens before their program even technically begins. Even logging the exception is a bad idea because, again, initialisation (or the lack thereof). I've been bitten by this and have made all my static constructors nothrow ever since, and I don't think there's any utility in ones that do. --
Jun 05 2023