factor out Annex exception handling module
This commit is contained in:
parent
1a96d4ab35
commit
ff21fd4a65
3 changed files with 34 additions and 14 deletions
27
Annex/Exception.hs
Normal file
27
Annex/Exception.hs
Normal file
|
@ -0,0 +1,27 @@
|
|||
{- exception handling in the git-annex monad
|
||||
-
|
||||
- Copyright 2011 Joey Hess <joey@kitenet.net>
|
||||
-
|
||||
- Licensed under the GNU GPL version 3 or higher.
|
||||
-}
|
||||
|
||||
module Annex.Exception (
|
||||
bracketIO,
|
||||
handle,
|
||||
throw,
|
||||
) where
|
||||
|
||||
import Control.Exception.Control (handle)
|
||||
import Control.Monad.IO.Control (liftIOOp)
|
||||
import Control.Exception hiding (handle, throw)
|
||||
|
||||
import AnnexCommon
|
||||
|
||||
{- Runs an Annex action, with setup and cleanup both in the IO monad. -}
|
||||
bracketIO :: IO c -> (c -> IO b) -> Annex a -> Annex a
|
||||
bracketIO setup cleanup go =
|
||||
liftIOOp (Control.Exception.bracket setup cleanup) (const go)
|
||||
|
||||
{- Throws an exception in the Annex monad. -}
|
||||
throw :: Control.Exception.Exception e => e -> Annex a
|
||||
throw = liftIO . throwIO
|
Loading…
Add table
Add a link
Reference in a new issue