From: Tatsuji Kawai Date: 2009-02-04T16:45:09+09:00 Subject: [ruby-dev:37898] [Bug #1105] Ruby1.9でのrescue節の例外ハンドラのマッチの処理 Bug #1105: Ruby1.9でのrescue節の例外ハンドラのマッチの処理 http://redmine.ruby-lang.org/issues/show/1105 起票者: Tatsuji Kawai ステータス: Open, 優先度: Normal ruby -v: ruby 1.9.2dev (2009-02-02 trunk 21974) 河井です。 Ruby1.9とRuby1.8では、例外ハンドルクラスのリストにExceptionのサブ クラス以外のオブジェクトが含まれている場合の挙動に違いがあります。 例えば以下のプログラムを実行した場合、 begin raise rescue Object.new, RuntimeError => e p e end ruby 1.9.2dev (2009-02-02 trunk 21974) [i686-linux]の場合の実行結果以下で # => RuntimeError Object.new が無視され、例外が補足されるようです。 ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]の場合の実行結果は # => /tmp/test.rb:3: class or module required for rescue clause (TypeError) となり、Object.neweがExceptionのサブクラスでないので例外が発生します。 参考までに、以下のコードの実行結果は1.9と1.8とも同で RuntimeErrorが補足される結果となります。 begin raise rescue RuntimeError, Object.new => e p e end -- 河井達治 ---------------------------------------- http://redmine.ruby-lang.org