【发布时间】:2016-10-29 12:14:46
【问题描述】:
我想使用“rescue_from”捕获 REST API 应用程序中的任何 RoR 异常。
rescue_from StandardError do |exception|
message = Rails.env.production? ? 'API server error' : exception.message
render json: {status: "Error", message: message}, status: :internal_server_error
end
但它捕获了太多不相关的异常。我只能捕获 RoR 异常吗?这是一个好习惯吗?如果没有,您还有什么可以推荐的?
【问题讨论】:
-
“仅限 RoR 例外”是什么意思。
ZeroDivision是从错误地尝试计算零个项目的平均值的控制器/模型抛出的,“RoR one”? -
@mudasobwa:例如路由错误、缺少参数、找不到记录等
-
RecordNotFound到底是如何特定于 Rails 的?除了 Rails 之外,可能还有一个应用程序完全使用数据库(和ActiveRecord)。有关路由错误,请参阅ActionControllerError。顺便说一句,您打算如何处理抛出的其他异常?就让你的应用死掉? -
@mudasobwa:给你更好的解决方案。这就是提出问题的原因。
-
目前我发现了以下错误:ActiveRecord::RecordNotFound、ActionController::ParameterMissing、ActionController::UnpermittedParameters(响应 :bad_request - 看起来像 API 客户端的错误)任何其他用 StandardError 捕获的东西(响应 :internal_server_error ) 这可以防止应用程序过早死亡。
标签: ruby-on-rails ruby error-handling exception-handling