GHC.Internal.Exception.Context

ghc-internal-9.1400.0: Basic libraries

Copyright | (c) The University of Glasgow 1998-2002
License | see libraries/base/LICENSE
Maintainer | cvs-ghc@haskell.org
Stability | internal
Portability | non-portable (GHC extensions)
Safe Haskell | None
Language | Haskell2010

GHC.Internal.Exception.Context

Contents

- Exception context
- Exception annotations

Description

Exception context type.

Synopsis

- data ExceptionContext = ExceptionContext [SomeExceptionAnnotation]
- emptyExceptionContext :: ExceptionContext
- addExceptionAnnotation :: ExceptionAnnotation a => a -> ExceptionContext -> ExceptionContext
- getExceptionAnnotations :: ExceptionAnnotation a => ExceptionContext -> [a]
- getAllExceptionAnnotations :: ExceptionContext -> [SomeExceptionAnnotation]
- mergeExceptionContext :: ExceptionContext -> ExceptionContext -> ExceptionContext
- displayExceptionContext :: ExceptionContext -> String
- data SomeExceptionAnnotation = ExceptionAnnotation a => SomeExceptionAnnotation a
- class Typeable a => ExceptionAnnotation a where
  - displayExceptionAnnotation :: a -> String

# Exception context

data ExceptionContext Source #

Exception context represents a list of `ExceptionAnnotation`s. These are attached to `SomeException`s via `addExceptionContext` and can be used to capture various ad-hoc metadata about the exception including backtraces and application-specific context.

`ExceptionContext`s can be merged via concatenation using the `Semigroup` instance or `mergeExceptionContext`.

Note that GHC will automatically solve implicit constraints of type `ExceptionContext` with `emptyExceptionContext`.

Constructors

ExceptionContext [SomeExceptionAnnotation] |

#### Instances

Instances details

Monoid ExceptionContext Source # |
Instance details Defined in GHC.Internal.Exception.Context Methods mempty :: ExceptionContext Source # mappend :: ExceptionContext -> ExceptionContext -> ExceptionContext Source # mconcat :: [ExceptionContext] -> ExceptionContext Source #
Semigroup ExceptionContext Source # |
Instance details Defined in GHC.Internal.Exception.Context Methods (<>) :: ExceptionContext -> ExceptionContext -> ExceptionContext Source # sconcat :: NonEmpty ExceptionContext -> ExceptionContext Source # stimes :: Integral b => b -> ExceptionContext -> ExceptionContext Source #

emptyExceptionContext :: ExceptionContext Source #

An `ExceptionContext` containing no annotations.

Since: base-4.20.0.0

addExceptionAnnotation :: ExceptionAnnotation a => a -> ExceptionContext -> ExceptionContext Source #

Construct a singleton `ExceptionContext` from an `ExceptionAnnotation`.

Since: base-4.20.0.0

getExceptionAnnotations :: ExceptionAnnotation a => ExceptionContext -> [a] Source #

Retrieve all `ExceptionAnnotation`s of the given type from an `ExceptionContext`.

Since: base-4.20.0.0

getAllExceptionAnnotations :: ExceptionContext -> [SomeExceptionAnnotation] Source #

mergeExceptionContext :: ExceptionContext -> ExceptionContext -> ExceptionContext Source #

Merge two `ExceptionContext`s via concatenation

Since: base-4.20.0.0

displayExceptionContext :: ExceptionContext -> String Source #

Render `ExceptionContext` to a human-readable `String`.

Since: base-4.20.0.0

# Exception annotations

data SomeExceptionAnnotation Source #

Constructors

ExceptionAnnotation a => SomeExceptionAnnotation a |

class Typeable a => ExceptionAnnotation a where Source #

`ExceptionAnnotation`s are types which can decorate exceptions as `ExceptionContext`.

Since: base-4.20.0.0

Minimal complete definition

Nothing

Methods

displayExceptionAnnotation :: a -> String Source #

Render the annotation for display to the user.

default displayExceptionAnnotation :: Show a => a -> String Source #

#### Instances

Instances details

ExceptionAnnotation Backtraces Source # |
Instance details Defined in GHC.Internal.Exception.Backtrace Methods displayExceptionAnnotation :: Backtraces -> String Source #
ExceptionAnnotation WhileHandling Source # |
Instance details Defined in GHC.Internal.Exception.Type Methods displayExceptionAnnotation :: WhileHandling -> String Source #