From: Joel VanderWerf Date: 2003-11-29T07:37:18+09:00 Subject: re-raising an exception with the original backtrace Is there a way to re-raise an exception without replacing its backtrace with the current one? The reason I want to do this is that I am catching an exception and passing it to a handler. The handler needs to make a decision and then, possibly, re-raise the same exception, preferrably with the same information as it originally contained. But if I do the following, the exception takes on the backtrace of the handler, which has lost some information. I know I can add the original backtrace to the exception's message, but that's not the same thing... $ cat exception.rb class MyError < StandardError; end def foo raise MyError end def main foo rescue Exception => e handler(e) end def handler(e) ok = false if ok return true else puts "backtrace:", e.backtrace, "---" raise e end end main $ ruby exception.rb backtrace: exception.rb:4:in `foo' exception.rb:8:in `main' exception.rb:23 --- exception.rb:19:in `handler': MyError (MyError) from exception.rb:10:in `main' from exception.rb:23 Note that the backtrace of e knows about foo, but the re-raised exception does not.