请帮我查一下官方文档,列出一系列例外情况。我写了这个动作:
def show
begin
@user = User.find(params[:id])
rescue ActiveRecord::RecordNotFound => e
logger.debug e
logger.debug "Error #{$!}"
render_404
end
end
我需要提到几种类型的例外:
def show
begin
@user = User.find(params[:id])
rescue ActiveRecord::RecordNotFound => e
logger.debug e
logger.debug "Error #{$!}"
render_404
rescue anotherExceptionType1 => e
......
......
.....
rescue anotherExceptionType2 => e
......
......
.....
rescue anotherExceptionType3 => e
......
......
.....
end
end
但我没有在文档中找到例外列表。
答案 0 :(得分:6)
您可以在此处查看ActiveRecordError的所有子类: https://github.com/rails/rails/blob/master/activerecord/lib/active_record/errors.rb
答案 1 :(得分:3)
我可以给你一个例外列表,但我不确定这是不是你真正想要的。相反,您可能想知道在特定情况下会抛出哪些异常。更重要的是,你可能不应该开始拯救例外。有关更多信息,请查看this link
但是你要求list,所以你去了:
您也可以访问该链接以查找错误的层次结构。
答案 2 :(得分:2)
如果我正确理解了这个问题,这里是可用例外列表。
答案 3 :(得分:1)
原因是你可以实现自己的例外,有效地使任何这样的列表无效。
至于ActiveRecord::RecordNotFound
:你不应该拯救它大部分时间,因为Rails会拯救它并提供标准的404响应,默认情况下呈现public/404.html
除非是“允许失败”。如果是这种情况,则不应使用find
,而是使用find_by_id
代替nil
如果找不到给定记录,不会引发异常
其他异常通常表示您的应用程序出现严重故障(例如数据库丢失或网络开始过自己的生命)。通常情况下,您的应用程序应该不会提如果发生严重事件并且您完全确定无法处理此请求,请引发异常:它会冒出来并变为500 Internal Server Error
响应。
您应该防止在正常执行应用程序期间引发异常。
答案 4 :(得分:0)
获取从Exception继承的所有类:
exceptions = ObjectSpace.each_object(Class).select{|c| c < Exception }
打印:
exceptions.map(&:to_s).sort.each{|s| puts s}