What's the idiomatic way to exit a program with some error code?
The documentation for Exit
says "The program terminates immediately; deferred functions are not run.", and log.Fatal
just calls Exit
. For things that aren't heinous errors, terminating the program without running deferred functions seems extreme.
Am I supposed to pass around some state that indicate that there's been an error, and then call Exit(1)
at some point where I know that I can exit safely, with all deferred functions having been run?
clean
by default and set todirty
on non-fatal error. And before yourmain()
exits, you can check for that variable. Not perfectly nice, but it might be the easiest solution in some cases. (I am glad comments can't be donwvoted :)) – Donegal