まつもと ゆきひろです

In message "Re: [ruby-dev:36763] Re: exception by throw"
    on Fri, 17 Oct 2008 19:31:33 +0900, Yukihiro Matsumoto <matz / ruby-lang.org> writes:

||ふと気がついたんですが、throw で対応する catch がないときの
||例外が変化しています。
||
||% ./ruby -e 'throw "a"'  
||-e:1:in `throw': uncaught throw "a" (ArgumentError)
||        from -e:1:in `<main>'
||
||% ruby-1.8 -e 'throw "a"'
||-e:1:in `throw': uncaught throw `a' (NameError)
||        from -e:1
||
||これは意図されたものでしょうか。
|
|はい。NameErrorは変数、メソッド、定数が存在しない局面に限定し
|ようと思ってのことです。なんらかの互換性問題があれば、再検討
|しますが。

今回の指摘を受けて、改めて考えてみたのですが、catch/throwのラ
ベルもNameErrorの対象に含めてまずいことはないので、むやみに
1.8との非互換性を増す必要もないので、ArgumentErrorから
NameErrorに戻そうと思います。