在Ruby on Rails中调用外部API时如何处理错误/异常?

我正在使用ruby包装器(createsend-ruby)与CampaignMonitor的API交互,我只是想知道你会推荐哪些错误/异常处理。 我正在考虑如下使用begin / rescue / end,但我只想知道是否有更好的技术来处理这类事情(当你处理第三方API时)。

begin
  list_id = CreateSend::List.create client_id, title, unsubscribe_page, confirmed_opt_in, confirmation_success_page
rescue Exception => e
  logger.error "[error] CampaignMonitor error: #{e}"
  return false
end

例如,你会尝试捕捉特定的异常并分别处理它们吗?

rescue CreateSend::BadRequest => e

或者这只是个人偏好和/或应用程序要求的问题?

感谢您的时间!


我通常从一个例外开始,抓住他们并从那里出发。 如果经常出现某个特定错误或需要以不同于另一个的方式进行处理,则只需在底部之上添加另一个救援块,以便在该处捕获异常。 你做对了:)

尽可能避免rescue Exception ,简单的rescue应该做到这一点。

只是为了澄清,你可以有任何数量的救援以及确保:

begin
  do_something
rescue CS::BadRequest => e
  logger.error "..."
rescue CS::TimeoutError => e
  do_something_that_retries
rescue => e
  logger.error "..."
ensure
  send_email_to_admin
end
链接地址: http://www.djcxy.com/p/25871.html

上一篇: How to handle errors/exceptions when calling an external API in Ruby on Rails?

下一篇: Raising SyntaxError inside a Python