まつもと ゆきひろです

In message "[ruby-dev:12765] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f)"
    on 01/04/04, "K.Kosako" <kosako / sofnec.co.jp> writes:

|> TypeErrorはrescueで捕捉できるのにNameErrorは捕捉できないとい
|> うのは一貫性がないような気がして来ました。NameErrorを
|> StandardErrorのサブクラスに戻すことについてどう思いますか?
|
|単純なタイプミスの場合が補足されるのは、変な気がします。

もちろんNameErrorはタイプミスが原因ではないかと思って、
ScriptErrorのサブクラスにしたわけですが、実際問題
たとえば

  a.foobar

が、foobarの部分のタイプミスなのか、aの型が間違っている
TypeErrorに相当するものなのかは判定できないと思います。

あ、でも、たとえば、レシーバが省略された形式であればタイプミ
スの可能性が高いと言えるでしょうね。分離すべきか。

そして、RubyレベルではTypeErrorは発生しませんから、形が合わ
ない場合にはほぼ間違いなくNameErrorが発生することになります。
となると、「TypeErrorは捕捉できるが、NameErrorが捕捉できない
のは一貫性がない」のではないかと思います。

これは「nilだから特別」というわけではありません。

                                まつもと ゆきひろ /:|)