haxl- A Haskell library for efficient, concurrent, and concise data access.

Safe HaskellNone




An exception hierarchy that can be used with the Haxl monad.

The Haxl framework may throw exceptions from this hierarchy: for example, a misbehaving data source causes dataFetch to throw a DataSourceError. The combinator withDefault from Haxl.Core.Prelude uses this hierarchy to provide default values for expressions that raise TransientError or LogicError exceptions.

You are under no obligations to use this hierarchy for your own exceptions, but you might find it useful nonetheless; for withDefault to be useful, for example, you'll want your exceptions to be children of LogicError or TransientError as appropriate.

Most users should import Haxl.Core instead of importing this module directly.



data HaxlException Source #

We have a 3-tiered hierarchy of exceptions, with HaxlException at the top, and all Haxl exceptions as children of this. Users should never deal directly with HaxlExceptions.

The main types of exceptions are:

Something is wrong with Haxl core.
Something is wrong with Haxl client code.
Things that really should be return values, e.g. NotFound.
Something is temporarily failing (usually in a fetch).

These are not meant to be thrown (but likely be caught). Thrown exceptions should be a subclass of one of these. There are some generic leaf exceptions defined below this, such as FetchError (generic transient failure) or CriticalError (internal failure).


MiddleException e => HaxlException (Maybe Stack) e 

Exception categories

Internal exceptions

newtype NonHaxlException Source #

Exceptions that are converted to HaxlException by asHaxlException. Typically these will be pure exceptions, e.g., the error function in pure code, or a pattern-match failure.


NonHaxlException Text 

Logic exceptions

newtype JSONError Source #

Generic "Incorrect assumptions about JSON data" exception.


JSONError Text 

Transient exceptions

Exception utilities

asHaxlException :: SomeException -> HaxlException Source #

Converts all exceptions that are not derived from HaxlException into NonHaxlException, using show.