BSD-3-Clause licensed by Edward A. Kmett
Maintained by Edward A. Kmett
This version can be pinned in stack with:exceptions-0.10.7@sha256:14e90e14927f55b1c1172ee9fc3d6a481474f3ac4e58e1f53aa3d157b7d8fbf2,2788

Module documentation for 0.10.7


Hackage Build Status

This package provides (optionally pure) extensible exceptions that are compatible with the monad transformer library.

Contact Information

Contributions and bug reports are welcome!

Please feel free to contact me through github or on the #haskell IRC channel on

-Edward Kmett


0.10.7 [2022.12.04]

  • On pre-8.0 GHCs, drop the call-stack dependency. This dependency was introduced in exceptions-0.10.6, but it induced breakage in libraries that derived instances of MonadThrow, MonadCatch, or MonadMask for newtypes without first enabling ConstraintKinds and FlexibleContexts. (Later versions of GHC do not require these language extensions for derived instances, so only old GHCs were affected.) To avoid breakage, exceptions no longer uses HasCallStack constraints on pre-8.0 versions of GHC.

    Note that exceptions still uses HasCallStack constraints on GHC 8.0 and later, and as a result, these versions of GHC are unaffected by this change.

0.10.6 [2022.11.30]

  • The class methods and functions in Control.Monad.Catch now have HasCallStack constraints.
  • Drop support for GHC 7.0 and 7.2.

0.10.5 [2022.05.07]

  • Allow building with transformers-0.6.* and mtl-2.3.*.

0.10.4 [2019.12.26]

  • Allow building with template-haskell-2.16.*.
  • Only depend on transformers-compat on old versions of GHC.

0.10.3 [2019.08.27]

  • MonadThrow instance for the strict ST monad.

0.10.2 [2019.05.02]

  • Allow building with base-4.13/template-haskell-2.15.

0.10.1 [2019.03.26]

  • Define a MonadFail instance for CatchT.
  • Allow QuickCheck-2.13 in the test suite.


  • Fix a regression in 0.9.0 whereby the non-IO effects in bracket’s use action were not visible to the release action, and the non-IO effects in the release action were not visible after the bracket call.
  • The type of generalBracket was changed in order to restore those non-IO effects, so if you are a library author that provides a MonadMask instance, you will need to update your implementation of this method.
  • Add MonadMask instance for MaybeT
  • Add onError function whose action also runs on errors which are not exceptions, such as a Nothing or a Left.


  • Add generalBracket to the MonadMask typeclass, allowing more valid instances.

    Note that functions such as bracket and finally are now based off of generalBracket, so if you are a library author that provides a MonadMask instance, you will need to provide an implementation of this method.

  • Add MonadMask instances for ExceptT and ErrorT


  • MonadCatch and MonadMask instances for Either SomeException


  • Support for throwing in the template-haskell Q monad
  • Support for transformers 0.5

  • Resolved warnings on GHC 7.10 and with transformers 0.4.


  • Use transformers-compat to allow support for ExceptT even on older transformers versions.


  • stm support


  • Split out MonadMask
  • Added transformers 0.4 support


  • Added instances of MonadThrow for ListT, MaybeT, ErrorT and ContT.


  • Factored out a separate MonadThrow.

  • QuickCheck dependency bump


  • Relicensed under the 3-clause BSD license.


  • Better documentation for CatchT.
  • Added handle-like analogues for parity with Control.Exception.


  • Fixed test suite.


  • Moved CatchT to Control.Monad.Catch.Pure to make it clear it isn’t required for working with IO.


  • Added mask_ and uninterruptibleMask_ to Control.Monad.Catch.


  • Added uninterruptibleMask to MonadCatch.


  • Flagged Control.Monad.Catch as Trustworthy

  • License fix. We were accidentally listing both an APL and BSD3 license in the same module


  • Repository initialized