Ruby 救援和重试特定代码块

2024-03-05

我的脚本中有以下代码...

  begin
    #Loop to create 1000 emails...
    #Loop to send 1000 emails...

  rescue Timeout::Error => e
    retry_attempts += 1
    if retry_attempts < 10
      retry
    else
      puts "Timeout error, deleting emails...".red
      logs.puts("Rescued a timeout error...#{e}")
      email_ids_all.each do |email_delete|
        #delete all email...
      end

我的问题是什么retry实际上是要“重试”。如果脚本已经在一个循环中生成了 1000 封电子邮件,并在另一个循环中发送了其中 999 封,然后在发送第 1000 封电子邮件时超时 - 是否会重试遇到错误的特定代码行,是否会启动循环在第 1000 封电子邮件结束时,它会重新开始整个循环,还是会从运行两个循环的脚本的开头开始?

我正在使用红宝石1.9.3。


retry将执行entire begin块,所以在你的情况下all电子邮件循环将再次运行。

这是一个简单的示例,它将连续打印整数 1 到 7(以 CTRL-C 终止,因为它将无限循环):

begin
  (1..10).each do |x|
    puts x
    if x > 6
      STDIN.gets # press enter to do another iteration
      raise ArgumentException
    end
  end
rescue
  retry # loop will restart from 1
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby 救援和重试特定代码块 的相关文章

随机推荐