[#380] bug report#3 and request#5 — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
1 message
1996/08/06
[ruby-list:397] Re: about exception
From:
matz@... (Yukihiro Matsumoto)
Date:
1996-08-09 10:37:55 UTC
List:
ruby-list #397
まつもと ゆきひろです.
In message "[ruby-list:396] Re: about exception"
on 96/08/09, 石塚圭樹 <keiju@shljapan.co.jp> writes:
|けいじゅ@SHLジャパンです.
|ただ, errno って POSIX で標準化されているんでしたっけ? ちゃんと標準化
|されているのなら, いいのですが, 標準かの度合によっては, OS毎で互換性が
|なくなってきますね...
|
|それに, 非POSIX OSでは, 全然違うし...
そうなんですよ.文字列にしておけば「人間に分かる情報」が入っ
ている,で済むんですけど,シンボルや数値にしちゃうとプラット
フォーム間でどうやって整合性をとるかという話になっちゃうでしょ
う?
たとえば将来NT版を作ったりすることを考えるとちょっと避けたい
気になりません?
|>メソッドが無いとか,定数が無いとか,コンパイル型の言語ならコ
|>ンパイル時に分かるようなものは例外にせずエラーにしたら良いの
|>ではないかという気がしてきました.まてよ,なんで例外に一本化
|>したんだっけな? なんか理由があったような….
|
|きっと, eval でエラーを起こすのがいやだったのでは?
まあ,evalではエラーを例外に変換し直せば済むことなんですけど,
もう3年も前のことなので,すっかり忘れてしまった.手元の記録
によるとエラーと例外の統合が行われたのは,93年11月27日です.
でも,理由は書いてないんだな.
|> * 複数の例外が発生してしまう場合はたしかにありえると思う.
|> が,その場合でも本当に区別しなければならない場合は少ない
|> と考えている($!で分岐すれば現在でも可能).
|
|そうですねえ. (B)タイプの例外処理を行なわないのならば, あまりないとは思
|うのですが...
|
|例えば,
(中略)
|とかやりたくなるのは, 私が(B)タイプの例外処理に毒されているせい??
多分,そうなんでしょう(ensureはrescueの間違いですよね).
f = open(name)
だけとか(例外は捕捉しない,プログラムは中断)
begin
f = open(name)
rescue
f = 代わりのディスクリプタ
end
くらいがrubyらしい感じがします.
|> * ただし,コンパイル型の言語ならコンパイル時に見付けられる
|> ような「エラー」も例外になっているrubyの問題点(欠点?)に
|> ついては今回初めて認識した.これについては対策を検討する
|> (が,なにもしないかもしれない).
|昔松本氏が, 文字列を読み込んで, 逐次evalするスクリプトを書きましたが,
|ああいうのは例外としてキャッチできないと困りますよね.
昔の実装ではevalでエラーが起きた時には例外に直していたような
気がします(うろおぼえ).
それとエラーを例外に変換するイテレータがあったように思います.
イテレータブロックの中でエラーが発生すると,それを捕捉して例
外をあげるというものです.
|文字列で比較するのは, 気分が悪いというだけです. 文字列は, 一般に唯一性
|の保証がないので, エラーのようなものは, コードかシンボルで比較したいと
|いうことでした.
Cじゃないんですから文字列の比較をそんなに嫌わなくても….
|PS.
|質問. rubyのエキスパートは何と呼ぶのでしょう?
|rubypert? rubynitian?
TeXじゃないんだから(苦笑).
rubyist(ルビイスト)というのはどうでしょう?
まつもと ゆきひろ /:|)