on master help sign in
Handle exceptions thrown by the application
commitcef41ee659302bb2749fe2f60f6e77ac51119aaa authorMichael Snoyman <michael@snoyman.com> dateMon 20 Sep 2010, 08:02 (16 years ago) parentfd59034
2 files changed+17−10
Network/Wai/Handler/DevelServer.hs+8−3 wai-handler-devel.cabal+9−7
Network/Wai/Handler/DevelServer.hs+8−3
@@ -6,6 +6,7 @@ module Network.Wai.Handler.DevelServer (run) where
66import Language.Haskell.Interpreter
77import Network.Wai
88
9+import qualified Data.ByteString.Lazy.UTF8 as U
910import qualified Data.ByteString.Lazy.Char8 as L8
1011import Network
1112 ( listenOn, accept, sClose, PortID(PortNumber), Socket
@@ -41,10 +42,14 @@ startApp queue withApp = do
4142 case msession of
4243 Nothing -> return ()
4344 Just (req, onRes) -> do
44− res <- app req
45− -- FIXME exceptions?
46− onRes res
45+ void $ forkIO $ (handle onErr $ app req) >>= onRes
4746 go app
47+ onErr :: SomeException -> IO Response
48+ onErr e = return
49+ $ Response status500 [("Content-Type", "text/plain; charset=utf-8")]
50+ $ ResponseLBS $ U.fromString
51+ $ "Exception thrown while running application\n\n" ++ show e
52+ void x = x >> return ()
4853
4954fillApp :: String -> String -> M.MVar Queue -> IO ()
5055fillApp modu func mqueue =
wai-handler-devel.cabal+9−7
@@ -21,13 +21,15 @@ Source-repository head
2121 location: git://github.com/snoyberg/wai-handler-devel.git
2222
2323Library
24− Build-Depends: base >= 3 && < 5,
25− wai >= 0.2.1 && < 0.3,
26− wai-extra >= 0.2.3 && < 0.3,
27− directory >= 1.0 && < 1.1,
28− network >= 2.2 && < 2.3,
29− bytestring >= 0.9 && < 0.10,
30− hint >= 0.3.2.3 && < 0.4
24+ Build-Depends: base >= 3 && < 5
25+ , wai >= 0.2.1 && < 0.3
26+ , wai-extra >= 0.2.3 && < 0.3
27+ , directory >= 1.0 && < 1.1
28+ , sendfile >= 0.6 && < 0.8
29+ , network >= 2.2 && < 2.3
30+ , bytestring >= 0.9 && < 0.10
31+ , hint >= 0.3.2.3 && < 0.4
32+ , utf8-string >= 0.3 && < 0.4
3133 Exposed-modules: Network.Wai.Handler.DevelServer
3234 ghc-options: -Wall
3335