Yesod.Core.Class.Yesod中的ParseError

时间:2013-06-07 12:15:16

标签: haskell yesod

我有一个Yesod Web应用程序,它在另一台服务器上调用Web服务。我将yesod的Http Manager重用于我对该Web服务的请求。 在某些调用中,我收到Yesod错误,我不确定为什么Yesod错误处理程序正在启动,因为错误处理不是Manager的一部分。 我的代码在HTTP响应上执行自己的状态处理(我在请求中let req' = req { H.checkStatus = \_ _ _ -> Nothing })。

我得到的错误:

07/Jun/2013:14:05:15 +0200 [Error#yesod-core] ParseError {errorContexts = [], errorMessage = "Failed reading: satisfy", errorPosition = 1:1} @(yesod-core-1.2.0.4:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:471:5)

我有一个明显的印象,即Web服务返回错误,而Yesod正在处理它而不是我的代码。我的Web服务客户端代码抛出了被重定向到错误页面的异常,当我在调用服务时出错时,这很有效,我只是不明白为什么我在某些请求中得到这个ParseError。

我正在转发请求和我从Web服务获得的响应,我从未在日志中看到响应,这似乎表明yesod正在拦截响应。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好的,抱歉这个愚蠢的问题,我已经弄明白了。 http-conduit代码抛出了ParseError,我的代码没有捕获它,所以Yesod正在bar。如果我发现ParseError,我会得到我的错误页面。现在,http-conduit以这样一个突然的消息失败是不正常的,我不知道,但我确实认为网络服务无论如何都是行为不端。