-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | The canonical error type -- -- A canonical Error type, which provides a way to turn an error -- string into an Error, add context to an Error, and -- pretty print the Error for displaying it to users. @package error @version 0.1.0.0 module Data.Error -- | The canonical Error type. -- -- It can be -- -- data Error -- | Create an ad-hoc Error from an error message. newError :: Text -> Error -- | 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. addContext :: Text -> Error -> Error -- | Pretty print the error. -- -- It will print all context messages, starting with the outermost. -- -- Example: -- --
--   prettyError $ newError "file not found: ./foo"
--   
--   ==> "file not found: ./foo"
--   
--   prettyError
--     $ addContext "Trying to open config file"
--       $ newError "file not found: ./foo"
--   
--   ==> "Trying to open config file: file not found: ./foo"
--   
prettyError :: Error -> Text -- | 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
--   
unwrapError :: Either Error p -> p -- | 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
--   
expectError :: Text -> Either Error p -> p