我正在运行一个机器人来玩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 块无法捕获异常,是什么导致了这个异常?