我有一个使用http-client https://www.stackage.org/haddock/lts-9.0/http-client-0.5.7.0/Network-HTTP-Client.html#v:httpLbs的yes应用程序。我在打电话
resp <- httpLbs req man
在Handler (Response BSL.ByteString)
monad。
我得到了这个(在应用程序的日志中)
6/Aug/2017:15:14:17 +0200 [Error#yesod-core] HttpExceptionRequest Request { ...
(下一行代码永远不会被执行)
相反,我想捕获异常,并在我的代码中处理它。怎么样?
答案 0 :(得分:5)
我建议使用safe-exceptions库中的tryAny
功能。粗略地说,这看起来像:
eres <- tryAny $ httpLbs req man
case eres of
Left e -> handleException e
Right lbs -> handleBody lbs
使用安全例外将帮助您避免使用异步异常和monad变换器可能遇到的一些极端情况。