ruby-on-rails - 如何在Ruby on Rails中捕获基本异常类?

标签 ruby-on-rails ruby error-handling exception-handling

我想使用“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异常(exception)吗?真的是个好习惯吗?如果没有,您还能推荐什么?

最佳答案

好了,您总是可以外出并获得所有Rails异常(exception)的详尽列表,但是说实话,您的第一步应该是确定要从哪些情况中解救出来以及允许哪些行为具有灾难性。并非所有异常都应该被捕获。

如果您对捕获所有Rails异常一无所知,则应该查看api文档以获取所使用的Rails的版本,并找到所需的异常的基类。例如,如果您希望只捕获所有ActiveRecord的对象,则可以从ActiveRecord::ActiveRecordError基类中抢救出来。

同样,我要强调的是,您应该从另一个方向着手解决这个问题-不要抢救一切,然后尝试精打细算,而是要从最低限度中抢救出来并根据需要添加。

关于ruby-on-rails - 如何在Ruby on Rails中捕获基本异常类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38054682/

相关文章:

ruby-on-rails - 生产/heroku 失败:WHERE a.attrelid = '"schools"'::regclass

ruby-on-rails - 使用 "database users"在 Ruby on Rails 中进行身份验证

ruby-on-rails - 如何配置 ransack 以默认去除前导和尾随空格?

logging - 如何确保在进程崩溃时获取具有行号的error_logger报告

blackberry - 位置:getLocation() method cannot be called from event thread错误

ruby-on-rails - apache 上的 redmine 找不到 Rack

ruby-on-rails - 非 RESTful Controller 中的 Cancan 授权

ruby - Rails current_path helper ?

ruby-on-rails - before_filter 与另一个 Controller

iphone - 我应该为哪些核心数据错误做准备?