我在Ruby中使用Mechanize将表单发布到站点以获取数据。偶尔,我会收到错误
too many connection resets (due to Operation timed out - Errno::ETIMEDOUT) after 13 requests on 34234234234242, last used 20.518373 seconds ago
这会使服务器崩溃。我想抓住这个错误并处理它(稍后通过重试)。
我试过
begin
postForm(form)
rescue Errno::ETIMEDOUT
puts "=====>TimeOut ERROR!:"
end
但它没有抓住错误。 我错过了什么?
感谢。
答案 0 :(得分:0)
看起来Mechanize捕获了Errno::ETIMEDOUT
错误并抛出了包含错误消息的新异常。因此,异常类名称不同,并且无法用Errno::ETIMEDOUT
捕获。
要确定错误类型,请尝试以下操作:
begin
postForm(form)
rescue => e
puts e.class
end
这将为您提供异常类名称,您可以更新rescue子句。
答案 1 :(得分:0)
如果您阅读了整个错误消息,您会发现由于“连接重置次数过多”而导致您失败:超时只是导致连接重置13次并且已经获救的原因。
因此,如果您阅读Net-Http-persistent >here<的来源,您将看到需要捕获的错误是:
Net::HTTP::Persistent::Error