在 Rails 中,我可以抛出异常但继续前进吗?

In Rails, can I throw an exception but keep going?

我在 Rails 中有一些东西可以处理大量事件。所有事件都是相互独立的。如果其中一个事件格式错误或其他原因,现在它会爆炸,并停止处理它之后的事件。

我想 try/catch,然后使用堆栈跟踪等将错误传播到我们所有的各种错误跟踪服务(New Relic、日志等)。有什么好的方法吗?

我基本上希望它表现得好像错误没有被捕获,用于跟踪,但继续进行,用于事件处理。

您可以修复错误,将其传递给 NewRelic,然后继续您的快乐之路...

def my_method
  # do things...
rescue => exception
  NewRelic::Agent.notice_error(exception)
end

是的,这是很有可能的。例如,让我们处理一堆事件。我们将拯救 StandardError 的所有后代错误,将它们记录到 honeybadger.io,并继续处理剩余的事件:

events.each do |event|
  begin
    process(event)
  rescue StandardError => error
    Honeybadger.notify(error)
  end
end