例外(空のリストでPrelude.headを使用)が発生し、その後すべてのhttp-requestが502/505例外を返しました(そしてhappstackアプリは「HTTPリクエストが失敗しました:リソースの送信が消えました(パイプが壊れています)」と出力しますstdout)。
私の質問はこれです:Happstackで例外を制御するためのベストプラクティスは何ですか?simpleHTTP以外のものを使用する必要がありますか、それともコントローラー関数でControl.Exception.catchを使用する必要がありますか?
現在、クラッシュコースの例と似ています。
main :: IO ()
main = do
hSetEncoding stdout utf8
bracket (startSystemState (Proxy :: Proxy AppState)) createCheckpointAndShutdown $
\_control ->
simpleHTTP nullConf { port = 1729 } $ do
_ <- liftIO today
decodeBody policy
controller
where
createCheckpointAndShutdown control = do
createCheckpoint control
shutdownSystem control