新井です。

In message "[ruby-list:34434] begin-rescue の ruby バージョンごとの挙動について"
  on 15 Mar 2002 05:07:51 +0900,
  Kengo Nakajima <ringo / vce-lab.net> wrote:
> こんにちは
> 中嶋と申します。
> 
> ruby 1.4.6 と 1.6.7 とでは、begin-rescue の挙動が異なる
> のですが、これはどの段階で変更されたのでしょうか?
> ChangeLogをみてもいまいちわからなかったので、変更された
> 目的とか、経緯について、教えてください。

>  1.4.6ではNameErrorがrescueにひっかかるので hoge が出ます
> が、1.6.7 では
> aho.rb:2: undefined method `chop' for nil (NameError)
> と出て hoge が出ません。 rescue で普通に取れたほうが便利そう
> だと思うのですが、何か目的があってこうなったということ
> なんでしょうか。

これ、私が悪いんですよねえ。Rubyの微妙なバランスを余計なお世
話で壊してしまったようです。胸がズキズキします。

[ruby-dev:8434] 参照。

なお、中嶋さんと同じように思う方は多く、 1.7 ではまた rescue 
されるようになってます。(これ FAQ に追加だなあ)

    begin
      nil.chop
    rescue
      STDERR.print "hoge"
    end

    => ruby 1.7.2 (2002-03-08) [i586-linux]
       hoge

--
新井康司 (Koji Arai)