| base-4.1.0.0: Basic libraries | Source code | Contents | Index

System.Exit

Portability | portable
Stability | provisional
Maintainer | libraries@haskell.org

Description
Exiting the program.
Synopsis

data ExitCode

= ExitSuccess
| ExitFailure Int

exitWith :: ExitCode -> IO a
exitFailure :: IO a
exitSuccess :: IO a

Documentation

data ExitCode | Source

Constructors

ExitSuccess | indicates successful termination;
ExitFailure Int | 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).

Instances

Eq ExitCode
Ord ExitCode
Read ExitCode
Show ExitCode
Typeable ExitCode
Exception ExitCode

exitWith :: ExitCode -> IO a | Source

Computation `exitWith` `code` throws ExitException `code`. Normally this terminates the program, returning `code` to the program's caller. Before the program terminates, any open or semi-closed handles are first closed.

A program that fails in any other way is treated as if it had called `exitFailure`. A program that terminates successfully without calling `exitWith` explicitly is treated as it it had called `exitWith` `ExitSuccess`.

As an ExitException is not an `IOError`, `exitWith` bypasses the error handling in the `IO` monad and cannot be intercepted by `catch` from the Prelude. However it is an `Exception`, and can be caught using the functions of Control.Exception. This means that cleanup computations added with Control.Exception.bracket (from Control.Exception) are also executed properly on `exitWith`.

exitFailure :: IO a | Source

The computation `exitFailure` is equivalent to `exitWith` `(``ExitFailure` exitfail`)`, where exitfail is implementation-dependent.

exitSuccess :: IO a | Source

The computation `exitSuccess` is equivalent to `exitWith` `ExitSuccess`, It terminates the program sucessfully.
Produced by Haddock version 2.4.2