Defines the exit codes that a program can return.
indicates successful termination;
indicates program failure with an exit code. The exact interpretation of the code is operating-system dependent. In particular, some values may be prohibited (e.g. 0 on a POSIX-compliant system).
On program termination, the standard
stderr are flushed automatically; any other buffered
need to be flushed manually, otherwise the buffered data will be
A program that fails in any other way is treated as if it had
A program that terminates successfully without calling
explicitly is treated as it it had called
ExitCode is not an
the error handling in the
IO monad and cannot be intercepted by
catch from the Prelude. However it is a
SomeException, and can
be caught using the functions of Control.Exception. This means
that cleanup computations added with
(from Control.Exception) are also executed properly on
Note: in GHC,
exitWith should be called from the main program
thread in order to exit the process. When called from another
exitWith will throw an
ExitException as normal, but the
exception will not cause the process itself to exit.