Show dialog box for uncaught exception (Windows, lld-link)
SimonN
eiderdaus at gmail.com
Sun May 5 18:28:29 UTC 2024
On Sunday, 5 May 2024 at 17:15:10 UTC, Steven Schveighoffer wrote:
> } catch(Exception e) {
> visualDisplayOfException(e);
> throw e;
> }
Thanks! That's practically the same pattern that I already use
for logging: Try-catch near the entry point, show the message,
re-throw. My implementation for the message box is now:
catch (Throwable t) {
import core.sys.windows.windows;
const string errText = /* ... parse t ... */
MessageBoxA(null, errText.ptr, null, MB_ICONERROR);
}
That solves my problem. Even though I don't pass my game's window
as the parent of the message box (first argument, where I pass
`null`), the graphical game halts before exiting, shows the
error, and users can screenshot both together. That's good.
From your answer, I'll assume: There is no standardized way in
the D ecosystem (e.g., by calling a DRuntime function from my
usercode) to opt into displaying such a message box for uncaught
exceptions. I have to call third-party APIs myself.
Or is there something after all? From reading the 2019 thread
[Deactivate windows MessageBox dialog on
exception](https://forum.dlang.org/post/tlhjypvsaxzymccfcvsw@forum.dlang.org), it sounds like we should get an error box when we link with `-subsystem:windows`, and no box otherwise.
-- Simon
More information about the Digitalmars-d-learn
mailing list