control-monad-exception-0.4.1: Explicitly typed, checked exceptions with stack traces

The control-monad-exception package

This package provides explicitly typed, checked exceptions as a library. /Example/

> data Expr = Add Expr Expr | Div Expr Expr | Val Double > eval (Val x) = return x > eval (Add a1 a2) = do > v1 <- eval a1 > v2 <- eval a2 > let sum = v1 + v2 > if sum < v1 || sum < v2 then throw SumOverflow else return sum > eval (Div a1 a2) = do > v1 <- eval a1 > v2 <- eval a2 > if v2 == 0 then throw DivideByZero else return (v1 / v2)

> data DivideByZero = DivideByZero deriving (Show, Typeable) > data SumOverflow = SumOverflow deriving (Show, Typeable)

> instance Exception DivideByZero > instance Exception SumOverflow

GHCi infers the following types

> eval :: (Throws DivideByZero l, Throws SumOverflow l) => Expr -> EM l Double > eval `catch` \ (e::DivideByZero) -> return (-1) :: Throws SumOverflow l => Expr -> EM l Double > runEM(eval `catch` \ (e::SomeException) -> return (-1)) :: Expr -> Double New in version 0.4: * (optionally) Unchecked exceptions (with 'UncaughtException') * Exception stack traces (with 'WithSrcLoc'). For example > f () = $withLocTH $ throw MyException > g a = $withLocTH $ f a > main = runEMT $ $withLocTH $ do > g () `catchWithSrcLoc` \loc MyException -> lift $ putStrLn (showExceptionWithTrace loc MyException) Running @main@ produces the output: > *Main> main > MyException > in Main.docatch.hs: (12,6) > Main.docatch.hs: (11,7)

Properties

Versions0.1, 0.1.1, 0.1.2, 0.2, 0.3, 0.3.1, 0.3.2, 0.4, 0.4.1, 0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.4.8, 0.5, 0.6, 0.8.0, 0.8.0.1, 0.8.0.2, 0.8.0.3, 0.8.0.4, 0.9.0, 0.9.1, 0.10.0
Dependenciesbase (≥3.0 & <4), extensible-exceptions (0.1.*), monads-fd (0.0.*), pretty, template-haskell, transformers (≥0.0.1 & <0.2) or
base (≥3.0 & <4), extensible-exceptions (0.1.*), mtl, pretty, template-haskell or
base (4.*), monads-fd (0.0.*), pretty, template-haskell, transformers (≥0.0.1 & <0.2) or
base (4.*), mtl, pretty, template-haskell
LicensePublicDomain
AuthorPepe Iborra
Maintainerpepeiborra@gmail.com
Stabilityexperimental
CategoryControl, Monads
Home pagehttp://safe-tools.dsic.upv.es/mediawiki/index.php/Jose_Iborra/Papers/Exceptions
Upload dateWed Sep 16 10:35:06 UTC 2009
Uploaded byPepeIborra
Build failureghc-6.10 (log), ghc-6.12 (log)

Modules

Downloads