module Utils.Exception where import Control.Exception as E import System.Exit inProcess a b = tagEM b a tagEM op msg = op `E.catch` (\e -> error ("Error on "++msg ++" (" ++show (e::SomeException) ++")")) tagE op msg = mapException tag op where tag :: SomeException -> ErrorCall tag e = ErrorCall $ "Error in "++msg++" ("++show e++")" onErrorTerminateWith op msg = op `E.catch` (\e -> putStrLn ("Error on "++msg ++" (" ++show (e::SomeException) ++")") >> exitWith (ExitFailure 1))