Мне нужно добавить информацию об отладке ко всем исключениям, которые происходят внутри блока, но я не хочу испортить обратную трассировку. $!
, похоже, не допускает этого в 1.9.3; raise
заменяет backtrace независимо от того, что я пытаюсь.Ruby: Предоставить информацию для сообщений об исключениях, не касаясь stacktrace
Идеи?
Вот что я использовал первоначально:
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
Это отвалы оригинальный трассировки стека в сообщение, но по-прежнему Безразлично не сохраняйте старую трассировку стека в качестве трассировки стека
Независимо от того, что вы пробовали в своем описании, что, в свою очередь, поможет нам предложить вам что-то лучшее. –
Я обновил вопрос примерами –