enclosed-exceptions: Catching all exceptions from within an enclosed computation

[ control, library, mit ] [ Propose Tags ]

Catching all exceptions raised within an enclosed computation, while remaining responsive to (external) asynchronous exceptions. For more information on the technique, please see: https://www.fpcomplete.com/user/snoyberg/general-haskell/exceptions/catching-all-exceptions

[Skip to Readme]




Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Versions [RSS] 1.0.0,,, 1.0.1,, 1.0.2, 1.0.3
Change log ChangeLog.md
Dependencies base (>=4.6 && <5), deepseq, lifted-base (>=0.2), monad-control, transformers, transformers-base [details]
License MIT
Author Michael Snoyman, João Cristóvão
Maintainer jmacristovao@gmail.com, michael@snoyman.com
Category Control
Home page https://github.com/jcristovao/enclosed-exceptions
Source repo head: git clone git://github.com/jcristovao/enclosed-exceptions.git
Uploaded by MichaelSnoyman at 2018-07-11T05:20:12Z
Distributions Arch:1.0.3, Debian:1.0.3, Fedora:1.0.3, FreeBSD:, LTSHaskell:1.0.3, NixOS:1.0.3, Stackage:1.0.3
Reverse Dependencies 23 direct, 1024 indirect [details]
Downloads 40732 total (73 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2018-07-11 [all 1 reports]

Readme for enclosed-exceptions-1.0.3

[back to package description]


The purpose of this module is to allow you to capture all exceptions originating from within the enclosed computation, while still reacting to asynchronous exceptions aimed at the calling thread.

This way, you can be sure that the function that calls, for example, catchAny, will still respond to ThreadKilled or Timeout events raised by another thread (with throwTo), while capturing all exceptions, synchronous or asynchronous, resulting from the execution of the enclosed computation.

One particular use case is to allow the safe execution of code from various libraries (which you do not control), capturing any faults that might occur, while remaining responsive to higher level events and control actions.

This library was originally developed by Michael Snoyman for the ClassyPrelude library, and was latter spun-off into a separate independent package.

For a more detailed explanation of the motivation behind this functions, see:

Catching all exceptions


the discussion in haskell-cafe