捕获用于日志记录的Ruby异常,但不要';你不会扔吗?
我的脑子好像冻住了。我想在通过多个对象的循环过程中捕获一个可能的Ruby异常,以便在以后显示时将其视为失败,但我不想停止执行;我希望它跳过坏记录并继续。我该怎么做呢?我不认为我可以使用捕获用于日志记录的Ruby异常,但不要';你不会扔吗?,ruby,exception-handling,Ruby,Exception Handling,我的脑子好像冻住了。我想在通过多个对象的循环过程中捕获一个可能的Ruby异常,以便在以后显示时将其视为失败,但我不想停止执行;我希望它跳过坏记录并继续。我该怎么做呢?我不认为我可以使用重试,因为那样会再次尝试相同的记录,对吗 some_ary.each do |item| begin do_something_with item rescue Exception => e Logger.error "OH NO: #{e}" end end 应继续执行,并捕获
重试
,因为那样会再次尝试相同的记录,对吗
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)
不要“做”任何事。如果您捕获了一个异常并对其进行了处理(通过将坏对象添加到列表或其他方式),只需继续您的工作。伪代码:
for each object foo
try
do something risky with foo
catch
badobjects.add(foo)
这是我的第一直觉,我也尝试过,但处理过程似乎仍然停止了(当它处理近200条记录时,几乎立即重定向)。我这样做是为了一个Rails应用程序,我不认为这会影响任何事情,是吗?在这种情况下,Wayne,听起来你可能会从编写一个简单的独立脚本中获益,从而找出为什么这在你的特定应用程序中不起作用的原因application@Wayne,在什么级别捕获异常?如果在循环之外,那么异常确实会停止循环。如果在循环中,如@JoshL所示,那么循环应该继续。这是我的第一本能,我已经尝试过了,但处理似乎仍然停止了(当它处理近200条记录时,它几乎立即重定向)。我这样做是为了一个Rails应用程序,我不认为这会影响任何事情,是吗?在这种情况下,Wayne,听起来你可能会从编写一个简单的独立脚本中获益,从而找出为什么这在你的特定应用程序中不起作用的原因application@Wayne,在什么级别捕获异常?如果在循环之外,那么异常确实会停止循环。如果在循环中,如@josh所示,那么循环应该继续。