在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?