我正在运行机器人在vindinium.org
玩游戏。它在shell循环中运行,以便在它完成后开始新的游戏。
我注意到,我可能有一半的游戏因http-conduit
中被抛出的异常而丢失。例外是
vindinium: FailedConnectionException2 "vindinium.org" 80 False getAddrInfo: does not exist (Name or service not known)
据我所知,这是一个DNS失败,但我不确定是什么导致它,与我在同一网络上的其他人没有这个问题(但没有其他人有问题)客户端)。
目前,我处理网络的唯一代码是:
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块无法捕获异常,以及导致此异常的原因是什么?