如果模板引发了ActiveRecord::RecordNotFound
异常,则原始异常将被ActionView吞噬并变成ActionView::Template::Error
。
似乎在Rails 5中有一个original_exception方法,但在Rails 6中似乎没有了。
我希望能够检查ActionView::Template::Error
的原因,这样我就可以更好地显示上下文错误。
有办法吗?
如果捕获ActionView::Template::Error
,则应该在其上定义一个#cause
方法,该方法返回原始异常。例子:
begin
begin
raise ArgumentError
rescue
raise RuntimeError
end
rescue => e
puts "#{ e } caused by #{ e.cause }"
end
打印
RuntimeError caused by ArgumentError