diff --git a/iteratee.cabal b/iteratee.cabal
--- a/iteratee.cabal
+++ b/iteratee.cabal
@@ -1,5 +1,5 @@
 name:          iteratee
-version:       0.8.4.4
+version:       0.8.4.5
 synopsis:      Iteratee-based I/O
 description:
   The Iteratee monad provides strict, safe, and functional I/O. In addition
@@ -50,7 +50,7 @@
     ListLike                  >= 1.0     && < 5,
     bytestring                >= 0.9     && < 0.11,
     containers                >= 0.2     && < 0.6,
-    exceptions                >= 0.3     && < 0.5,
+    exceptions                >= 0.5     && < 0.6,
     parallel                  >= 2       && < 4,
     transformers              >= 0.2     && < 0.4
 
diff --git a/src/Data/Iteratee/Base.hs b/src/Data/Iteratee/Base.hs
--- a/src/Data/Iteratee/Base.hs
+++ b/src/Data/Iteratee/Base.hs
@@ -161,10 +161,13 @@
 instance (MonadIO m, Nullable s, NullPoint s) => MonadIO (Iteratee s m) where
   liftIO = lift . liftIO
 
+instance (MonadThrow m, Nullable s, NullPoint s) =>
+  MonadThrow (Iteratee s m) where
+    throwM e    = lift $ CIO.throwM e
+
 instance (MonadCatch m, Nullable s, NullPoint s) =>
   MonadCatch (Iteratee s m) where
     m `catch` f = Iteratee $ \od oc -> runIter m od oc `CIO.catch` (\e -> runIter (f e) od oc)
-    throwM e    = lift $ CIO.throwM e
     mask q      = Iteratee $ \od oc -> CIO.mask $ \u -> runIter (q $ ilift u) od oc
     uninterruptibleMask q = Iteratee $ \od oc -> CIO.uninterruptibleMask $ \u -> runIter (q $ ilift u) od oc
 
