rescue
Rubyの勉強
呼び出したメソッドでエラーが発生してもちゃんと補足してくれました <当たり前?
$@には呼び出した行と、実際にエラーが発生した行の2つが格納される。
begin a = nil a.abc rescue Exception => err p err.class #=> NoMethodError p err #=> #<NoMethodError: undefined method `abc' for nil:NilClass> p $@ #=> ["F:/ruby_RDE/rb49F.tmp:3"] p $! #=> #<NoMethodError: undefined method `abc' for nil:NilClass> end # methodでエラーになった場合 def test a = String.new a.abc end begin test rescue Exception => err p err #=> #<NoMethodError: undefined method `abc' for "":String> p $@ #=> ["F:/ruby_RDE/rb49F.tmp:12:in `test'", "F:/ruby_RDE/rb49F.tmp:16"] p $! #=> #<NoMethodError: undefined method `abc' for "":String> end