まつもと ゆきひろです

In message "[ruby-list:29101] Re: nil.to_f"
    on 01/04/04, Yukihiro Matsumoto <matz / zetabits.com> writes:

||ところで, 以下のようなスクリプト
||
||% cat test.rb
||
||while gets
||  $_ = split
||  0.step(2, 1) do |i|
||    begin
||      $_[i] = $_[i].to_f
||    rescue
||      $_[i] = 0.0
||    end
||  end
||  STDOUT << "#{$_[0]}\t#{$_[1]}\t#{$_[2]}\n"
||end
||
||を実行してみたのですが, 
|
||tmp3.rb:5: undefined method `to_f' for nil (NameError)
||        from tmp3.rb:3:in `step'
||        from tmp3.rb:3
||
||となって rescue されませんでした. 何がまずいのでしょうか. 
|
|NameErrorはデフォルトでは捕捉されないからですね。

TypeErrorはrescueで捕捉できるのにNameErrorは捕捉できないとい
うのは一貫性がないような気がして来ました。NameErrorを
StandardErrorのサブクラスに戻すことについてどう思いますか?

その場合ScriptErrorに残るのはLoadError, SyntaxError,
NotImplementedErrorになるわけです。

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