Using Environment.ExitCode versus returning int from Main

rkg picture rkg · Mar 9, 2011 · Viewed 12.9k times · Source

I am planning to use the return code of the C# executable in one of my shell script. I have two options:

Returning a int value from the main method

class MainReturnValTest
{
    static int Main()
    {
        //...
        return 0;
    }
}

(OR)

Using Environment.Exit with an exit code

class MainReturnValTest
{
    static void Main()
    {
        //...
        Enviroment.Exit(exitCode);
    }
}

Is it fine to use any of the above ways to return value from the executable? Or is one of them preferred over other?

Answer

Hans Passant picture Hans Passant · Mar 10, 2011

Environment.Exit() is a rude abort. It instantly terminates the process. Use it only when you detect a gross failure, it is appropriate in an AppDomain.UnhandledException event handler for example. Which runs when your program is about to terminate because of an unhandled exception.

Which is your lead: exceptions are a good way to signal unusual conditions that should terminate the program with an ExitCode that isn't zero. In fact, it automatically gets set to the HResult property value of the exception. No code required.