1

如果我有一个循环,并且在循环中的某个地方,我会得到一个异常或错误。我如何保持循环继续?

Foos.each do |foo|
  ....
  # Random error/exception thrown here
  ....
end

我应该rescue在循环中有一个块吗?这会使循环完成吗?还是有更好的选择?

4

1 回答 1

3

您可以使用添加begin/rescue块。如果出现错误,我不确定是否有其他方法可以保持循环继续进行。

4.times do |i|
  begin
    raise if i == 2
    puts i
  rescue
    puts "an error happened but I'm not done yet."
  end
end
# 0
# 1
# an error happened but I'm not done yet.
# 3
#=> 4

另一方面,由于您的标题要求一种结束循环的方法。
如果您希望循环以 结束rescue,您可以使用break.

4.times do |i|
  begin
    raise if i == 2
    puts i
  rescue
    puts "an error happened and I'm done."
    break
  end
end
# 0
# 1
# an error happened and I'm done.
#=> nil
于 2012-11-14T02:48:08.107 回答