Ruby救援并重试特定的代码块
发布时间:2020-12-16 23:03:11 所属栏目:百科 来源:网络整理
导读:我的脚本中有以下代码… 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
我的脚本中有以下代码…
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 我的问题是重试实际上是“重试”.如果脚本已经在一个循环中生成了1000封电子邮件,并在另一个循环中发送了999封电子邮件,然后在发送第1000封电子邮件时超时 – 它是否会重试它遇到错误的特定代码行,是否会启动循环使用第1000个电子邮件,它会启动整个循环,还是从脚本开始运行两个循环开始? 我正在使用ruby 1.9.3. 解决方法
重试将执行整个开始块,因此在您的情况下,所有电子邮件循环将再次运行.
这是一个快速示例,它将连续打印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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |