我的脚本中有以下代码...
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
Run Code Online (Sandbox Code Playgroud)
我的问题是retry实际上要"重试"的是什么.如果脚本已经在一个循环中生成了1000封电子邮件,并在另一个循环中发送了999封电子邮件,然后在发送第1000封电子邮件时超时 - 它是否会重试它遇到错误的特定代码行,是否会启动循环使用第1000个电子邮件,它会启动整个循环,还是从脚本开始运行两个循环开始?
我正在使用ruby 1.9.3.
小智 12
retry将执行整个 begin块,因此在您的情况下,所有电子邮件循环将再次运行.
这是一个快速示例,它将连续打印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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10275 次 |
| 最近记录: |