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 に答える