我想使用“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/