From: Ralph Shnelvar on 28 Jul 2010 16:44 [Note: parts of this message were removed to make it a legal post.] Let's say I'm running rubyw and a RunTimeError is raised ... and I'm using FXRuby (which is tangential to this question) ... and I want to put up a errorbox ... But I want to capture the error message that would normally go to stdout, i.e. the call stack ... How would I capture the call stack to a string in a raised exception? - - - begin raise RuntimeError, "Something bad happened" rescue # What do I do here? end - - -
From: Joseph E. Savard on 28 Jul 2010 16:58 begin puts 1/0 rescue Exception, NameError => e print "this is an error [#{e}]" print $!.inspect #Ruby places a reference to the associated Exception object into the global variable $! end output: this is an error [divided by 0]#<ZeroDivisionError: divided by 0> > From: Ralph Shnelvar <ralphs(a)dos32.com> > Organization: Ralph Shnelvar > Reply-To: <ruby-talk(a)ruby-lang.org> > Date: Thu, 29 Jul 2010 05:44:36 +0900 > To: ruby-talk ML <ruby-talk(a)ruby-lang.org> > Subject: rubyw, RuntimeError, capturing the stack, FXRuby > > Let's say I'm running rubyw and a RunTimeError is raised ... > > and I'm using FXRuby (which is tangential to this question) ... > > and I want to put up a errorbox ... > > But I want to capture the error message that would normally go to stdout, i.e. > the call stack ... > > How would I capture the call stack to a string in a raised exception? > > - - - > begin > raise RuntimeError, "Something bad happened" > rescue > # What do I do here? > end > - - -
From: Ralph Shnelvar on 28 Jul 2010 17:09 [Note: parts of this message were removed to make it a legal post.] Joseph, This does not give the call stack with file names and line numbers of the exception. Thanks. Ralph Wednesday, July 28, 2010, 2:58:20 PM, you wrote: JES> begin JES> puts 1/0 JES> rescue Exception, NameError => e JES> print "this is an error [#{e}]" JES> print $!.inspect #Ruby places a reference to the associated Exception JES> object into the global variable $! JES> end JES> output: this is an error [divided by 0]#<ZeroDivisionError: divided by 0> >> From: Ralph Shnelvar <ralphs(a)dos32.com> >> Organization: Ralph Shnelvar >> Reply-To: <ruby-talk(a)ruby-lang.org> >> Date: Thu, 29 Jul 2010 05:44:36 +0900 >> To: ruby-talk ML <ruby-talk(a)ruby-lang.org> >> Subject: rubyw, RuntimeError, capturing the stack, FXRuby >> Let's say I'm running rubyw and a RunTimeError is raised ... >> and I'm using FXRuby (which is tangential to this question) ... >> and I want to put up a errorbox ... >> But I want to capture the error message that would normally go to stdout, i.e. >> the call stack ... >> How would I capture the call stack to a string in a raised exception? >> - - - >> begin >> raise RuntimeError, "Something bad happened" >> rescue >> # What do I do here? >> end >> - - - -- Best regards, Ralph mailto:ralphs(a)dos32.com
From: Joseph E. Savard on 28 Jul 2010 17:35 Sorry.. Des this help? begin puts 1/0 rescue Exception, NameError => e print "this is an error [#{e}] ----->[#{e.backtrace}]<-------" print $!.inspect #Ruby places a reference to the associated Exception object into the global variable $! end this is an error [divided by 0] ----->[/Users/jes/error.rb:2:in `/'/Users/jes/error.rb:2]<------- #<ZeroDivisionError: divided by 0> > From: Ralph Shnelvar <ralphs(a)dos32.com> > Organization: Ralph Shnelvar > Reply-To: <ruby-talk(a)ruby-lang.org> > Date: Thu, 29 Jul 2010 06:09:07 +0900 > To: ruby-talk ML <ruby-talk(a)ruby-lang.org> > Subject: Re: rubyw, RuntimeError, capturing the stack, FXRuby > > Joseph, > > This does not give the call stack with file names and line numbers of the > exception. > > Thanks. > > Ralph > > > > Wednesday, July 28, 2010, 2:58:20 PM, you wrote: > > JES> begin > JES> puts 1/0 > JES> rescue Exception, NameError => e > JES> print "this is an error [#{e}]" > JES> print $!.inspect #Ruby places a reference to the associated Exception > JES> object into the global variable $! > JES> end > > JES> output: this is an error [divided by 0]#<ZeroDivisionError: divided by 0> > > > >>> From: Ralph Shnelvar <ralphs(a)dos32.com> >>> Organization: Ralph Shnelvar >>> Reply-To: <ruby-talk(a)ruby-lang.org> >>> Date: Thu, 29 Jul 2010 05:44:36 +0900 >>> To: ruby-talk ML <ruby-talk(a)ruby-lang.org> >>> Subject: rubyw, RuntimeError, capturing the stack, FXRuby > >>> Let's say I'm running rubyw and a RunTimeError is raised ... > >>> and I'm using FXRuby (which is tangential to this question) ... > >>> and I want to put up a errorbox ... > >>> But I want to capture the error message that would normally go to stdout, >>> i.e. >>> the call stack ... > >>> How would I capture the call stack to a string in a raised exception? > >>> - - - >>> begin >>> raise RuntimeError, "Something bad happened" >>> rescue >>> # What do I do here? >>> end >>> - - - > > > > > > -- > Best regards, > Ralph mailto:ralphs(a)dos32.com
From: Marvin Gülker on 28 Jul 2010 17:41 Ralph Shnelvar wrote: > This does not give the call stack with file names and line numbers of > the exception. Use Exception#backtrace: irb(main):001:0> begin irb(main):002:1* raise "Error" irb(main):003:1> rescue => e irb(main):004:1> puts e.backtrace irb(main):005:1> end (irb):2:in `irb_binding' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb/workspace.rb:80:in `eval' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb/workspace.rb:80:in `evaluate' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb/context.rb:216:in `evaluate' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb.rb:157:in `block (2 levels) in eval_input' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb.rb:271:in `signal_status' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb.rb:154:in `block in eval_input' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb/ruby-lex.rb:244:in `block (2 levels) in each_top_level_statement' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb/ruby-lex.rb:230:in `loop' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb/ruby-lex.rb:230:in `block in each_top_level_statement' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in `catch' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in `each_top_level_statement' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb.rb:153:in `eval_input' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb.rb:70:in `block in start' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb.rb:69:in `catch' /opt/rubies/ruby-1.9.1-p429/lib/ruby/1.9.1/irb.rb:69:in `start' /home/marvin/Programmieren/Programme/irb_/irb_.rb:37:in `<main>' => nil irb(main):006:0> Vale, Marvin -- Posted via http://www.ruby-forum.com/.
|
Pages: 1 Prev: respond_to? failing Next: how to determine array element number in a each loop |