control-monad-exception-0.6: Explicitly typed, checked exceptions with stack tracesSource codeContentsIndex
Defines the Throws binary relationship between types.
class Exception e => Throws e l
data Caught e l
newtype CheckedException l = CheckedException {
checkedException :: SomeException
class Exception e => Throws e l Source

Throws is a type level binary relationship used to model a list of exceptions.

There are two cases in which the user may want to add further instances to Throws.

1. To encode subtyping.

2. To declare an exception as unexplicit (a programming error).

As there is no way to automatically infer the subcases of an exception, they have to be encoded manually mirroring the hierarchy defined in the defined Exception instances. For example, the following instance encodes that MyFileNotFoundException is a subexception of MyIOException :
 instance Throws MyFileNotFoundException (Caught MyIOException l)

Throws is not a transitive relation and every ancestor relation must be explicitly encoded.

                                                            --   TopException
                                                            --         |
   instance Throws MidException   (Caught TopException l)   --         |
                                                            --   MidException
   instance Throws ChildException (Caught MidException l)   --         |
   instance Throws ChildException (Caught TopException l)   --         |
                                                            --  ChildException

SomeException is automatically an ancestor of every other exception type.

Programming Errors
In order to declare an exception E as a programming error, which should not be explicit nor checked, use a Throws instance as follows:
    instance Throws e l
show/hide Instances
data Caught e l Source
A type level witness of a exception handler.
show/hide Instances
newtype CheckedException l Source
CheckedException adds a phantom type parameter l to SomeException
checkedException :: SomeException
show/hide Instances
Produced by Haddock version 2.4.2