Extensible optionally-pure exceptions


Version on this page:0.10.4@rev:3
LTS Haskell 20.23:0.10.4
Stackage Nightly 2023-05-29:0.10.5
Latest on Hackage:0.10.7@rev:1

See all snapshots exceptions appears in

BSD-3-Clause licensed by Edward A. Kmett
Maintained by Edward A. Kmett
This version can be pinned in stack with:exceptions-0.10.4@sha256:7ed09aed03683d5b4337088061106c2389d274b3472031a330ff1b220bad2b2d,2796

Module documentation for 0.10.4


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 irc.freenode.net.

-Edward Kmett


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