Be aware that "passing through" of asynchronous exceptions is not really possible. There simply is no way to selectively catch an exception -- one must always catch and rethrow, thus turning asynchronous exceptions into synchronous exceptions. See http://www.edsko.net/2013/06/11/throwto/ for details.

Edsko


On Wed, Feb 5, 2014 at 11:23 AM, Roman Cheplyaka <roma@ro-che.info> wrote:
It is often useful to distinguish between synchronous and asynchronous
exceptions. The common idiom is to run a user-supplied computation
catching any synchronous exceptions but allowing asynchronous exceptions
(such as user interrupt) pass through.

base 4.7 (shipped with GHC 7.8) will have SomeAsyncException type that
solves this problem.

asynchronous-exceptions is a new package that serves two purposes:
* provide compatibility with older `base` versions that lack the
  `SomeAsyncException` type
* define convenient functions for catching only synchronous exceptions

Roman

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe