[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:000374] Re: exception in NumArray



ごとけんです

In message "[dennou-ruby:000373] exception in NumArray"
    on 00/08/20, Takeshi Horinouchi <horinout@xxxxxx> writes:
>   a = NumArray.new(Float,4,3,2)
>
>などとしますが、第一引数で与えるクラス名(上ではFloat)にサポート
>されてないものを与えると、NotImplementError 例外を発生することに
>なってます。川那辺君の気分を推測すると、Float 以外は "not yet
>implimented" なのでこうしたのでしょう。しかしこれだと (とりあえ
>ず Sun では)セッション終了になってしまい困ります。

StandardError はラベル無しのrescueで拾えますね。いっぽう、そ
うでない例外は明示的にそのエラーをラベルにしてrescueする必要
があります。

begin 
  a = NumArray.new(Integer, 4, 3, 2)
  ....
rescue NotImplementError
  ....
end

さて、どんな例外にするかですが、いくつか選択肢があって、標準
のものでは、ArgumentError, TypeError のいずれかでしょう。ま
た、StandardError のサブクラスとして NumArrayError を設け、
そのサブクラスにするという手もあります。

TypeErrorは一般に型の不整合に関するエラーですが、僕の意見と
してはどちらかと言えば ArgumentError の方がふさわしいと思い
ます。

RuntimeError は特に名前が与えられていないという感じがします
ので、とりあえず付けるならそれでも良いですが、ずっと使い続け
る名前でも無いかと思います。

-- gotoken