Hi all,
i don''t know if it''s a bug but at least, for me,
incomprehensible.
try this code (plain ruby):
module A
class MyException < StandardError; end
def raise_ex
raise MyException, "details.."
rescue Exception => ex
puts "inside module A #{ex.class}"
raise
end
end
class Test
include A
def call_test
raise_ex
rescue Exception => ex
puts "inside class Test #{ex.class}"
end
end
Test.new.call_test
i get this..
inside module A A::MyException
inside class Test A::MyException
...as expected.
try this wxruby code:
begin
require ''rubygems''
rescue LoadError
end
require ''wx''
include Wx
module A
class MyException < StandardError; end
def raise_ex
raise MyException, "details.."
rescue Exception => ex
puts "inside module A #{ex.class}"
raise
end
end
class MyFrame < Frame
include A
def initialize
super(nil, -1, "Raise Exception demonstration",
DEFAULT_POSITION, Size.new(350,200), DEFAULT_FRAME_STYLE)
panel = Panel.new(self, -1)
button = Button.new(panel, -1, "Raise exception",
Point.new(15,15))
evt_button( button.get_id ) { on_raise_exception }
evt_close { | e | on_close_window(e) }
end
def on_raise_exception
raise_ex
rescue Exception => ex
puts "inside class MyFrame #{ex.class}"
end
def on_close_window(event)
event.skip
end
end
class MyApp < App
def on_init
begin
main = MyFrame.new
main.show
rescue Exception => e
exit(1)
end
end
end
MyApp.new.main_loop
i get this...
inside module A ArgumentError # totally wrong error type
and even worse it doesn''t propagate.
Tested on ruby 1.8.6/1.9.1, wxruby 2.0.0/2.0.1 x86-mswin32/x86-mingw32
_______________________________________________
wxruby-users mailing list
wxruby-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/wxruby-users