diff --git a/Network/Web/Server/CGI.hs b/Network/Web/Server/CGI.hs
--- a/Network/Web/Server/CGI.hs
+++ b/Network/Web/Server/CGI.hs
@@ -2,7 +2,10 @@
 
 module Network.Web.Server.CGI (tryGetCGI) where
 
+import Prelude hiding (catch)
+
 import Control.Applicative
+import Control.Exception
 import qualified Data.ByteString.Char8      as S
 import qualified Data.ByteString.Lazy.Char8 as L
 import Data.Maybe
@@ -20,8 +23,10 @@
 ----------------------------------------------------------------
 
 tryGetCGI :: BasicConfig -> Request -> CGI -> IO (Maybe Response)
-tryGetCGI cnf req cgi = processCGI `catch` const internalError
+tryGetCGI cnf req cgi = either e2Nothing id <$> try processCGI
   where
+    e2Nothing :: SomeException -> Maybe Response
+    e2Nothing = const Nothing
     processCGI = do
       let envVars = makeEnv cnf req cgi
           pro = CreateProcess {
diff --git a/webserver.cabal b/webserver.cabal
--- a/webserver.cabal
+++ b/webserver.cabal
@@ -1,5 +1,5 @@
 Name:                   webserver
-Version:                0.5.0
+Version:                0.5.0.1
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             John W. Lato <jwlato@gmail.com>
 License:                BSD3
