From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1997-07-18T18:34:04+09:00 Subject: [ruby-list:3388] Re: Exception けいじゅ@今はフリー(^^;;;です. In [ruby-list :03383 ] the message: "[ruby-list:3383] Re: Exception ", on Jul/18 14:59(JST) matz@netlab.co.jp (Yukihiro Matsumoto) writes: >これらはすべてTypeError(タイプが合わなかったよ)という例外で, >メッセージは補足的な情報だと考えてください.例外の形式として >は > > * 例外が起きたよ.で,内容はメッセージを見てね > * こういう例外が起きたよ.より詳しい内容はメッセージを見てね > * こういう例外が起きたよ > >というような形が考えられて,昔のrubyは一番上,今は真中ですよ >ね.石塚さんが「なっていませんよね」とおっしゃるのは,一番下, >つまりある例外はメッセージも含めて一意であるような例外の形式 >ですよね. そうです. Cのerrno程度は欲しいなと思いました. >まあ,そういうのも存在しえて,かつ使う方としてはそれなりに便 >利だろうとは思うのですが, > > * それぞれ個別の例外を定義するのが面倒臭い これはいえるんですよねえ.... でも, 実際にはメッセージの種類はたくさん あるんだから, それと手間は変わらないともいえるような... > * 例外の数が増えて大変 これに関しては, 例外クラスに階層を持たせることができるんだから, 増えて も問題なくできるとは思いますよ. 今の例外にもう1階層増やす感じでね. > * 現在の例外システムはPythonなどでも実績がある 同じ程度の粒度なんですか? >などの理由から,基本的には今のままで良いんでないかなあと思い >ます.もっとも,不適切な例外をあげている場所があるかも知れま >せんけど(ArgErrorのはずのところにTypeErrorとか). これはいけませんね. >|例外クラスの目的は, 例外の識別にあると思っていたのですが... そういうも >|のではないんですか? >あんまり細かい分類は必要でないと思っています. 私も実用上はあまり問題ないと思いますが... Cのerrnoでは, 何かやる毎(関数毎)に調べなくてはいけないのですが, rubyの 例外はブロック大きく括ってキャッチできるようになっていますよね. つまり 複数の例外を発生させる可能性箇所をまとめて一箇所で例外処理ができますよ ね. ここが便利な点なのですが, 今の粒度だと, 複数の箇所で同じ例外を出す 可能性が高くなりますよね. そうすると, ブロックの括りを小さくしなくちゃ いけなくなり, 極端な場合, 関数毎に例外処理を行わなくなる点が気になって いるぐらいですけどね. そうそう. 最後にリクエスト:: 例外のタイプを知るのに $!.inspect ではだめで, $!.typeを調べなくてはな りません, Exception#inspectでtypeも出力するように変えてもらえません? __ .........................................石塚 圭樹@今はフリー(^^;;... ------->>また, アドレス変わりました!! e-mail: keiju@bc.mbn.or.jp <<---