重试功能的用例?

时间:2011-09-29 11:57:14

标签: ruby

我读了这个片段,我想了解如何使用retry,我无法想到使用它。其他人如何使用它?

#!/usr/bin/ruby

for i in 1..5
    retry if  i > 2
    puts "Value of local variable is #{i}"
end

2 个答案:

答案 0 :(得分:8)

有几个用例。这是编程Ruby书中的一本

@esmtp = true

begin
  # First try an extended login. If it fails because the
  # server doesn't support it, fall back to a normal login

  if @esmtp then
    @command.ehlo(helodom)
  else
    @command.helo(helodom)
  end

rescue ProtocolError
  if @esmtp then
    @esmtp = false
    retry
  else
    raise
  end
end

另一个常见的情况是电子邮件递送。您可能需要重试SMTP传送N次,在每次重试之间添加sleep以避免网络连接导致的临时问题。

答案 1 :(得分:0)

我将它用于对第三方web api进行api调用的模块,因此如果失败,我会重试2次。