error-0.1.0.0: The canonical error type

Data.Error

Synopsis

# Documentation

data Error Source #

The canonical Error type.

It can be

• created from a human-readable error message (newError)
• more semantic context can be added to an existing Error (addContext)
• pretty-printed (prettyError)

Create an ad-hoc Error from an error message.

Add a higher-level context to an Error.

For example, your code hits a “file not found” I/O exception. Instead of propagating it unseen, you catch it and annotate it with addContext, and describe why you wanted to open the file in the first place:

addContext "Trying to open config file"
$newError "file not found: ./foo"  This way, when a user see the error, they will understand better what happened: "Trying to open config file: file not found: ./foo"  See prettyError. Pretty print the error. It will print all context messages, starting with the outermost. Example: prettyError$ newError "file not found: ./foo"

prettyError
$addContext "Trying to open config file"$ newError "file not found: ./foo"



unwrapError :: Either Error p -> p Source #

Return the value from a potentially failing computation.

Abort with the Errors message if it was a Left.

Panic: if Error

Example:

unwrapError $Left (newError "oh no!") ==> *** Exception: oh no! unwrapError$ Right 42

==> 42


expectError :: Text -> Either Error p -> p Source #

Return the value from a potentially failing computation.

Abort with the error message if it was an error.

The text message is added to the Error as additional context before aborting.

Panic: if Error

Example:

exceptError "something bad happened" $Left (newError "oh no!") ==> *** Exception: something bad happened: oh no! exceptError$ Right 42

==> 42