From: "David A. Black" Date: 2003-11-29T08:20:34+09:00 Subject: Re: re-raising an exception with the original backtrace Hi -- On Sat, 29 Nov 2003, Joel VanderWerf wrote: > > 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 I think if you just do 'raise' there, instead of 'raise e', it will propagate the original exception and backtrace. David -- David A. Black dblack@wobblini.net