diff --git a/chuchu.cabal b/chuchu.cabal
--- a/chuchu.cabal
+++ b/chuchu.cabal
@@ -1,5 +1,5 @@
 name: chuchu
-version: 0.4.1
+version: 0.4.2
 cabal-version: >= 1.8
 build-type: Simple
 license: OtherLicense
diff --git a/src/Test/Chuchu.hs b/src/Test/Chuchu.hs
--- a/src/Test/Chuchu.hs
+++ b/src/Test/Chuchu.hs
@@ -234,16 +234,17 @@
   parseStep <- ask
   case parseStep step of
     Left e -> do
-      putDoc $ describeStep UnknownStep step
-      liftIO $ warn $ concat [ "The step "
-                             , show (stBody step)
-                             , " doesn't match any step definitions I know."
-                             , show e ]
+      let msg = concat [ "The step "
+                       , show (stBody step)
+                       , " doesn't match any step definitions I know."
+                       , show e ]
+      putDoc $ describeStep (UnknownStep msg) step
       return False
     Right m -> do
       r <- E.catches (lift m >> return SuccessfulStep)
              [ E.Handler $ \(e :: E.AsyncException) -> E.throw (e :: E.AsyncException)
-             , E.Handler $ \(_ :: E.SomeException)  -> return FailedStep ]
+             , E.Handler $ \(e :: E.SomeException) ->
+                 return (FailedStep $ "Caught exception: " ++ show e) ]
       putDoc (describeStep r step)
       return (r == SuccessfulStep)
 
diff --git a/src/Test/Chuchu/OutputPrinter.hs b/src/Test/Chuchu/OutputPrinter.hs
--- a/src/Test/Chuchu/OutputPrinter.hs
+++ b/src/Test/Chuchu/OutputPrinter.hs
@@ -65,10 +65,17 @@
 describeStep :: StepResult -> Step -> D.Doc
 describeStep result step =
   D.indent 4 $
-  color result (D.text (show $ stStepKeyword step) D.<+> t2d (stBody step))
+  D.vsep $ [color result (D.text (show $ stStepKeyword step) D.<+> t2d (stBody step))]
+        ++ map D.text (errMsg result)
     where
-      color SuccessfulStep = D.green
-      color FailedStep     = D.red
-      color UnknownStep    = D.yellow
+      color SuccessfulStep  = D.green
+      color (FailedStep _)  = D.red
+      color (UnknownStep _) = D.yellow
+      errMsg SuccessfulStep  = []
+      errMsg (FailedStep m)  = [m]
+      errMsg (UnknownStep m) = [m]
 
-data StepResult = SuccessfulStep | FailedStep | UnknownStep deriving (Eq)
+data StepResult = SuccessfulStep
+                | FailedStep String
+                | UnknownStep String
+                  deriving (Eq)
