捕获用于日志记录的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 应继续执行,并捕获

我的脑子好像冻住了。我想在通过多个对象的循环过程中捕获一个可能的Ruby异常,以便在以后显示时将其视为失败,但我不想停止执行;我希望它跳过坏记录并继续。我该怎么做呢?我不认为我可以使用
重试
,因为那样会再次尝试相同的记录,对吗

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所示,那么循环应该继续。