diff --git a/Control/Monad/Exception/Class.hs b/Control/Monad/Exception/Class.hs
--- a/Control/Monad/Exception/Class.hs
+++ b/Control/Monad/Exception/Class.hs
@@ -17,7 +17,7 @@
        module Control.Monad.Exception.Throws,
        MonadThrow(..), MonadCatch(..),
        WrapException(..), Exception(..), SomeException(..),
-       showExceptionWithTrace
+       showExceptionWithTrace, wrapException
        ) where
 
 import Control.Monad
@@ -45,6 +45,7 @@
 import Control.Exception (Exception(..), SomeException)
 import qualified Control.Exception
 #endif
+import Data.Monoid
 import Data.Typeable
 import Text.PrettyPrint
 
@@ -67,6 +68,11 @@
 
 instance Exception e => MonadCatch e IO IO where
    catch   = Control.Exception.catch
+
+wrapException ::
+     (MonadThrow e' m', MonadCatch e m m') =>
+     m a -> (e -> e') -> m' a
+wrapException m mkE = m `catch` (throw . mkE)
 
 {-| Given a list of source locations and an exception, @showExceptionWithTrace@ produces output of the form
 
diff --git a/control-monad-exception.cabal b/control-monad-exception.cabal
--- a/control-monad-exception.cabal
+++ b/control-monad-exception.cabal
@@ -1,5 +1,5 @@
 name: control-monad-exception
-version: 0.4.7
+version: 0.4.8
 Cabal-Version:  >= 1.2.3
 build-type: Simple
 license: PublicDomain
