如何从 ActionView::Template::Error 中获取原始异常
How to get original exception from ActionView::Template::Error
如果模板导致引发 ActiveRecord::RecordNotFound
异常,则原始异常会被 ActionView 吞没并变成 ActionView::Template::Error
。
似乎在 Rails 5 中有一个 original_exception 方法,但在 Rails 6 中似乎消失了。
我希望能够检查 ActionView::Template::Error
的原因,以便更好地显示上下文错误。
有什么办法吗?
如果您捕捉到 ActionView::Template::Error
,应该在其上定义了一个 #cause
方法,returns 原始异常。示例:
begin
begin
raise ArgumentError
rescue
raise RuntimeError
end
rescue => e
puts "#{ e } caused by #{ e.cause }"
end
打印
RuntimeError caused by ArgumentError
如果模板导致引发 ActiveRecord::RecordNotFound
异常,则原始异常会被 ActionView 吞没并变成 ActionView::Template::Error
。
似乎在 Rails 5 中有一个 original_exception 方法,但在 Rails 6 中似乎消失了。
我希望能够检查 ActionView::Template::Error
的原因,以便更好地显示上下文错误。
有什么办法吗?
如果您捕捉到 ActionView::Template::Error
,应该在其上定义了一个 #cause
方法,returns 原始异常。示例:
begin
begin
raise ArgumentError
rescue
raise RuntimeError
end
rescue => e
puts "#{ e } caused by #{ e.cause }"
end
打印
RuntimeError caused by ArgumentError