[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