0

我正在运行一个机器人来玩vindinium.org。它在 shell 循环中运行,因此当它完成时,一个新游戏就会开始。

不过我注意到,我的游戏中可能有一半因为在http-conduit. 例外是 vindinium: FailedConnectionException2 "vindinium.org" 80 False getAddrInfo: does not exist (Name or service not known)

据我了解,这是 DNS 故障,但我不确定是什么原因造成的,与我在同一网络上的其他人没有这个问题(但没有其他人有 haskell 客户端)。

目前,我唯一处理网络的代码是:

vinPost :: String -> [FormParam] -> IO Resp
vinPost url body = catch (post url (body ++ ["key" := vindinKey]) >>= asJSON)
                   (\e -> do
                            let err = show (e :: IOException)
                            hPutStr stderr $ "Error: " ++ err
                            vinPost url body)

最初,我也没有该catch零件,但我尝试添加它并没有帮助。它实际上只是再次尝试,因为错误似乎稍纵即逝。

无论如何,为什么我的 catch 块无法捕获异常,是什么导致了这个异常?

4

0 回答 0