On Thu, Sep 17, 2020 at 02:58:48PM +0000, drathier via Digitalmars-d-learn 
wrote:
> What's the proper way to exit with a specific exit code?
> 
> I found a bunch of old threads discussing this, making sure
> destructors run and the runtime terminates properly, all of which
> seemingly concluding that it's sad that there isn't a way to do this
> easily, but hopefully things have changed in the last 5-10 years and
> I'm just missing the obvious solution.

AFAIK, there still isn't an "official" way to do this besides return
the exit code from main().  My go-to solution is to declare an
ExitException that's explicitly caught by main():

        class ExitException : Exception {
                int returnCode;
                this() { super("exit"); }
        }

        void exit(int rc=0) { throw new ExitException(rc); }

        int main(string[] args) {
                try {
                        ... // your code here
                        exit(123);
                        ...
                } catch (ExitException e) {
                        return e.returnCode;
                }
                return 0;
        }

Caveat: this may or may not do the Right Thing(tm) in a multithreaded
application.


T

-- 
Talk is cheap. Whining is actually free. -- Lars Wirzenius

Reply via email to