从最终用户的错误中解救,但通过电子邮件向我发送错误详细信息(Rails)

时间:2016-02-28 22:38:37

标签: ruby-on-rails ruby api exception exception-handling

为最终用户优雅处理(即begin...rescue...end)错误的最佳做法是什么,但提醒我他们正在发生这种错误?

更多详情:

我有一个Ruby on Rails Web应用程序,其核心功能依赖于几个API(以及一些Web抓取),因此我需要特别小心处理可能发生的API错误。所述错误的示例:超出API并发使用限制,API数据以我没想到的格式返回,网页刮取错误等等。

如果API出于任何原因而踌躇不前,我希望最终用户没有糟糕的体验。 这是我目前的设置,我很想知道这是不是最好的做法,或者我错过了什么大事:

目前,我使用非常有用的exception_notification gem向我发送电子邮件错误。

对于我使用的任何API,我在我的应用程序的/lib目录中创建一个包装类,并在该类中我清理API返回的内容(基本上只是为了满足我的需要而标准化它)。在这些包装类中我有begin...rescue块,如下所示:

begin

  # the API call, or scrape with Nokogiri here...    

rescue Errno::ECONNREFUSED, Zlib::DataError, RuntimeError, OpenURI::HTTPError => e

  # set the return value to a helpful error or something... 

end 

正如你所看到的,我在这里拯救了4个不同的例外,而我发现这些例外的唯一方法就是通过反复试验。

  • 问题一:拯救使得最终用户的体验不会受到刺激,但我无法知道API(或刮擦)是如何糟糕的,所以我想我应该使用exception_notification的manual sending of a notification来向我自己发送救援块中的异常。 这是处理这个问题的好方法吗?
  • 问题二:不仅可能发生这4个特定异常。我应该从Exception => e中拯救自己的猜测并拯救自己,并通过电子邮件发送自己e的内容吗?

谢谢!

我没有使用exception_notification在救援块中向我自己发送电子邮件,而是在评论中提出了Anthony的建议并开始使用Rollbar

关于拯救的例外情况,Rescue StandardError, Not Exception更好。

0 个答案:

没有答案