Exception
- module Control.Exception
- catchIO :: IO a -> (IOException -> IO a) -> IO a
- handleIO :: (IOException -> IO a) -> IO a -> IO a
- tryIO :: IO a -> IO (Either IOException a)
- class Monad m => ExceptionMonad m where
- gtry :: (ExceptionMonad m, Exception e) => m a -> m (Either e a)
- ghandle :: (ExceptionMonad m, Exception e) => (e -> m a) -> m a -> m a
- gonException :: ExceptionMonad m => m a -> m b -> m a
Documentation
module Control.Exception
catchIO :: IO a -> (IOException -> IO a) -> IO a
handleIO :: (IOException -> IO a) -> IO a -> IO a
tryIO :: IO a -> IO (Either IOException a)
class Monad m => ExceptionMonad m where
A monad that can catch exceptions. A minimal definition
requires a definition of gcatch
.
Implementations on top of IO
should implement gblock
and gunblock
to
eventually call the primitives block
and
unblock
respectively. These are used for
implementations that support asynchronous exceptions. The default
implementations of gbracket
and gfinally
use gblock
and gunblock
thus rarely require overriding.
Methods
gcatch :: Exception e => m a -> (e -> m a) -> m a
gmask :: ((m a -> m a) -> m b) -> m b
gbracket :: m a -> (a -> m b) -> (a -> m c) -> m c
gfinally :: m a -> m b -> m a
gblock :: m a -> m a
DEPRECATED, here for backwards compatibilty. Instances can
define either gmask
, or both block
and unblock
.
gunblock :: m a -> m a
Instances
gtry :: (ExceptionMonad m, Exception e) => m a -> m (Either e a)
ghandle :: (ExceptionMonad m, Exception e) => (e -> m a) -> m a -> m a
gonException :: ExceptionMonad m => m a -> m b -> m a
Always executes the first argument. If this throws an exception the second argument is executed and the exception is raised again.