Provides functions to throw and catch exceptions. Unlike the functions from
Control.Exception, which work in IO, these work in any stack of monad
transformers (from the 'transformers' package) with IO as the base monad.
You can extend this functionality to other monads, by creating an instance
of the MonadCatchIO class.
Obtained from: FreeBSD Haskell