Я получил исключение (использовал Prelude.head в пустом списке), после которого все http-запросы после этого возвращали исключение 502/505 (и приложение happstack печатает «HTTP-запрос не выполнен: отправка ресурса исчезла (сломанный канал ) "в стандартный вывод).
Мой вопрос таков: как лучше всего управлять исключениями в Happstack? Должен ли я использовать что-то еще, кроме simpleHTTP или просто использовать Control.Exception.catch для функции контроллера?
В настоящее время выглядит как пример в Crash Course:
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