【发布时间】:2010-02-12 17:27:29
【问题描述】:
我好像脑子有病。我想在通过多个对象的循环期间捕获可能的 Ruby 异常,以便将其视为失败以便稍后显示,但我不希望暂停执行;我希望它跳过不良记录并继续。我该怎么做?我不认为我可以使用retry,因为那样会再次尝试相同的记录,对吧?
【问题讨论】:
我好像脑子有病。我想在通过多个对象的循环期间捕获可能的 Ruby 异常,以便将其视为失败以便稍后显示,但我不希望暂停执行;我希望它跳过不良记录并继续。我该怎么做?我不认为我可以使用retry,因为那样会再次尝试相同的记录,对吧?
【问题讨论】:
some_ary.each do |item|
begin
do_something_with item
rescue Exception => e
Logger.error "OH NO: #{e}"
end
end
应继续执行,发现并记录错误。
【讨论】:
不要“做”任何事情。如果您发现了异常并处理了它(通过将坏对象添加到列表或其他方式),请继续前进。伪代码:
for each object foo
try
do something risky with foo
catch
badobjects.add(foo)
【讨论】: