如何从ActionView::Template::Error获取原始异常



如果模板引发了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

最新更新