Safe Haskell | None |
---|---|
Language | Haskell2010 |
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 = forall e . MiddleException e => HaxlException (Maybe Stack) e
- data InternalError = forall e . Exception e => InternalError e
- internalErrorToException :: Exception e => e -> SomeException
- internalErrorFromException :: Exception e => SomeException -> Maybe e
- data LogicError = forall e . Exception e => LogicError e
- logicErrorToException :: Exception e => e -> SomeException
- logicErrorFromException :: Exception e => SomeException -> Maybe e
- data LogicBug = forall e . Exception e => LogicBug e
- logicBugToException :: Exception e => e -> SomeException
- logicBugFromException :: Exception e => SomeException -> Maybe e
- data TransientError = forall e . Exception e => TransientError e
- transientErrorToException :: Exception e => e -> SomeException
- transientErrorFromException :: Exception e => SomeException -> Maybe e
- newtype CriticalError = CriticalError Text
- newtype DataSourceError = DataSourceError Text
- newtype NotFound = NotFound Text
- newtype UnexpectedType = UnexpectedType Text
- newtype EmptyList = EmptyList Text
- newtype JSONError = JSONError Text
- newtype InvalidParameter = InvalidParameter Text
- newtype MonadFail = MonadFail Text
- newtype FetchError = FetchError Text
- asHaxlException :: SomeException -> HaxlException
- class Exception a => MiddleException a where
Documentation
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 HaxlException
s.
The main types of exceptions are:
InternalError
- Something is wrong with Haxl core.
LogicBug
- Something is wrong with Haxl client code.
LogicError
- Things that really should be return values, e.g. NotFound.
TransientError
- 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).
forall e . MiddleException e => HaxlException (Maybe Stack) e |
Show HaxlException Source | |
ToJSON HaxlException Source | These need to be serializable to JSON to cross FFI boundaries. |
Exception HaxlException Source |
Exception categories
internalErrorToException :: Exception e => e -> SomeException Source
internalErrorFromException :: Exception e => SomeException -> Maybe e Source
logicErrorToException :: Exception e => e -> SomeException Source
logicErrorFromException :: Exception e => SomeException -> Maybe e Source
logicBugToException :: Exception e => e -> SomeException Source
logicBugFromException :: Exception e => SomeException -> Maybe e Source
transientErrorToException :: Exception e => e -> SomeException Source
transientErrorFromException :: Exception e => SomeException -> Maybe e Source
Internal exceptions
newtype CriticalError Source
Generic "critical" exception. Something internal is borked. Panic.
newtype DataSourceError Source
A data source did something wrong
Logic exceptions
Generic "something was not found" exception.
newtype UnexpectedType Source
Generic "something had the wrong type" exception.
Generic "input list was empty" exception.
Generic "Incorrect assumptions about JSON data" exception.
newtype InvalidParameter Source
Generic "passing some invalid parameter" exception.
Generic "fail was called" exception.
Transient exceptions
newtype FetchError Source
Generic transient fetching exceptions.
Exception utilities
asHaxlException :: SomeException -> HaxlException Source
Converts all exceptions that are not derived from HaxlException
into NonHaxlException
, using show
.