【发布时间】:2013-03-13 11:27:59
【问题描述】:
我需要为块内发生的所有异常添加调试信息,但我不想弄乱回溯。$! 在 1.9.3 中似乎不允许这样做;无论我尝试什么,raise 都会替换回溯。
想法?
这是我最初使用的:
def self.load(filename, virtual_path = nil)
t = Template.new(filename, virtual_path)
t.is_page? ? Page.new(t) : t
rescue
raise $!, "Error loading template '#{filename}'#{virtual_path ? " under virtual path '" + virtual_path + "'" : ""}: #{$!}"
end
到目前为止我发现的最好的是:
def self.load(filename, virtual_path = nil)
t = Template.new(filename, virtual_path)
t.is_page? ? Page.new(t) : t
rescue => e
raise e, "Error loading template '#{filename}'#{virtual_path ? " under virtual path '" + virtual_path + "'" : ""}: #{e.message} #{e.backtrace}"
end
这会将原始堆栈跟踪转储到消息中,但仍不会将旧堆栈跟踪保留为堆栈跟踪
【问题讨论】:
-
无论您尝试过什么,都在您的描述中发布,这反过来又有助于我们向您推荐更好的东西。
-
我已经用示例更新了问题