我有一个使用http-client https://www.stackage.org/haddock/lts-9.0/http-client-0.5.7.0/Network-HTTP-Client.html#v:httpLbs的yesod应用程序。我在打电话
resp <- httpLbs req man
Run Code Online (Sandbox Code Playgroud)
在Handler (Response BSL.ByteString)
单子里面。
我得到这个(在应用程序的日志中)
6/Aug/2017:15:14:17 +0200 [Error#yesod-core] HttpExceptionRequest Request { ...
Run Code Online (Sandbox Code Playgroud)
(下一行代码永远不会执行)
相反,我想捕获异常,并在我的代码中对其进行处理。怎么样?
我建议使用tryAny
函数从安全的例外库。大致来说,这看起来像:
eres <- tryAny $ httpLbs req man
case eres of
Left e -> handleException e
Right lbs -> handleBody lbs
Run Code Online (Sandbox Code Playgroud)
使用安全异常将帮助您避免某些极端情况,否则您可能会遇到异步异常和monad转换器。
归档时间: |
|
查看次数: |
154 次 |
最近记录: |