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
- - -
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@dos32.com>
Organization: Ralph Shnelvar
Reply-To: <ruby-talk@ruby-lang.org>
Date: Thu, 29 Jul 2010 05:44:36 +0900
To: ruby-talk ML <ruby-talk@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
- - -
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:
···
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@dos32.com>
Organization: Ralph Shnelvar
Reply-To: <ruby-talk@ruby-lang.org>
Date: Thu, 29 Jul 2010 05:44:36 +0900
To: ruby-talk ML <ruby-talk@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@dos32.com
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@dos32.com>
Organization: Ralph Shnelvar
Reply-To: <ruby-talk@ruby-lang.org>
Date: Thu, 29 Jul 2010 06:09:07 +0900
To: ruby-talk ML <ruby-talk@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:
> 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@dos32.com>
Organization: Ralph Shnelvar
Reply-To: <ruby-talk@ruby-lang.org>
Date: Thu, 29 Jul 2010 05:44:36 +0900
To: ruby-talk ML <ruby-talk@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@dos32.com
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/\.