为最终用户优雅处理(即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个不同的例外,而我发现这些例外的唯一方法就是通过反复试验。
Exception => e
中拯救自己的猜测并拯救自己,并通过电子邮件发送自己e
的内容吗? 谢谢!
解
我没有使用exception_notification在救援块中向我自己发送电子邮件,而是在评论中提出了Anthony的建议并开始使用Rollbar。
关于拯救的例外情况,Rescue StandardError, Not Exception更好。