如何从 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...