Project

General

Profile

Actions

Bug #1105

closed

Ruby1.9でのrescue節の例外ハンドラのマッチの処理

Bug #1105: Ruby1.9でのrescue節の例外ハンドラのマッチの処理

Added by tkawai (Tatsuji Kawai) over 16 years ago. Updated over 14 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.2dev (2009-02-02 trunk 21974)
Backport:
[ruby-dev:37898]

Description

=begin
河井です。

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

--
河井達治
=end

Actions

Also available in: PDF Atom