@@ -55,6 +55,7 @@ module Control.Distributed.Process.Internal.Primitives
55 , unStatic
55 , unStatic
56 -- * Exception handling
56 -- * Exception handling
59 , onException
60 , onException
@@ -89,7 +90,7 @@ import Control.Monad.Reader (ask)
89import Control.Monad.IO.Class (MonadIO, liftIO)
90import Control.Monad.IO.Class (MonadIO, liftIO)
90import Control.Applicative ((<$>))
91import Control.Applicative ((<$>))
91import Control.Exception (Exception, throwIO, SomeException)
92import Control.Exception (Exception, throwIO, SomeException)
92−import qualified Control.Exception as Ex (catch, mask)
93+import qualified Control.Exception as Ex (catch, mask, try)
93import Control.Distributed.Process.Internal.StrictMVar
94import Control.Distributed.Process.Internal.StrictMVar
94 ( StrictMVar
95 ( StrictMVar
95 , modifyMVar
96 , modifyMVar
@@ -504,7 +505,13 @@ catch p h = do
504 lproc <- ask
505 lproc <- ask
505 liftIO $ Ex.catch (runLocalProcess lproc p) (runLocalProcess lproc . h)
506 liftIO $ Ex.catch (runLocalProcess lproc p) (runLocalProcess lproc . h)
507−-- | Lift 'Control.Exception.mask'
508+-- | Lift 'Control.Exception.try'
509+try :: Exception e => Process a -> Process (Either e a)
512+ liftIO $ Ex.try (runLocalProcess lproc p)
514+-- | Lift 'Control.Exception.mask'
508mask :: ((forall a. Process a -> Process a) -> Process b) -> Process b
515mask :: ((forall a. Process a -> Process a) -> Process b) -> Process b
509mask p = do
516mask p = do
510 lproc <- ask
517 lproc <- ask