0

当我尝试从 Google 获取联系人时,但有时当我单击链接以连接 Google API 时,我会收到一个错误页面,其中写着Connection FailedTimeout Issue。当我在这个错误发生后的另一分钟尝试它时,它通常可以工作,但是有没有办法避免这个错误?

仅向用户显示此错误消息不是很用户友好...

编辑:一点点代码

  begin
    @contacts = Contacts::Gmail.new(@email, @password)
  rescue
    @error_message = 'Incorrect password. Try it, please, again.'
  end

这基本上是最重要的部分——当我调用这个动作时,命令

@contacts = 联系人::Gmail.new(@email, @password)

将尝试连接 Google 的 API。问题是,有时它会因错误消息而失败 - 就像 5 次尝试中的 1 次一样。

有没有办法处理这种情况?

4

1 回答 1

1

我想你可以使用retry

begin
  @contacts = Contacts::Gmail.new(@email, @password)
rescue Timeuot, ConnectionFailed
  retry
rescue
  @error_message = 'Incorrect password. Try it, please, again.'
end

您需要使用真正的异常类来代替 Timeuot 和 ConnectionFailed。这有点冒险,因为如果您遇到永久性错误,它可能会进入无限循环,因此最好有某种计数器并仅重试 3 次。

有关更多详细信息,请查看文档http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_exceptions.html

于 2013-07-20T11:57:47.513 回答