From: Tanaka Akira Date: 2005-09-19T12:42:51+09:00 Subject: [ruby-dev:27156] close error smashes an exception in a block 次のように、ブロックをつけて open を呼び、ブロック内でファイルをクロー ズした後でエラーが起きた場合、そのエラーは外部に報告されず、IOError に なります。 % ./ruby -ve 'open("/dev/null") {|f| f.close; raise ArgumentError }' ruby 1.9.0 (2005-09-18) [i686-linux] -e:1:in `close': closed stream (IOError) from -e:1:in `open' from -e:1 なお、1.8 でも同様です。 1.6 ではそうはならずに内部で発生したエラーが外部に出てきたのですが、こ れは意図的な挙動でしょうか? % ruby-1.6 -ve 'open("/dev/null") {|f| f.close; raise ArgumentError }' ruby 1.6.8 (2003-10-15) [i686-linux] -e:1: ArgumentError (ArgumentError) from -e:1:in `open' from -e:1 -- [田中 哲][たなか あきら][Tanaka Akira]