1{-# OPTIONS_GHC -fno-warn-deprecations #-}
2{-# LANGUAGE ConstraintKinds #-}
3
4module GHC.Utils.Exception
5    (
6    module Control.Exception,
7    module GHC.Utils.Exception
8    )
9    where
10
11import GHC.Prelude
12
13import Control.Exception
14import Control.Exception as CE
15import Control.Monad.IO.Class
16import Control.Monad.Catch
17
18-- Monomorphised versions of exception-handling utilities
19catchIO :: IO a -> (IOException -> IO a) -> IO a
20catchIO = CE.catch
21
22handleIO :: (IOException -> IO a) -> IO a -> IO a
23handleIO = flip catchIO
24
25tryIO :: IO a -> IO (Either IOException a)
26tryIO = CE.try
27
28type ExceptionMonad m = (MonadCatch m, MonadThrow m, MonadMask m, MonadIO m)
29