langsmith:138
From: Fumisky Wells <ttn3w7u2fs mx6.ttcn.ne.jp>
Date: Thu, 7 Oct 2004 11:29:28 +0900
Subject: [langsmith:138] Re: 例外処理:Eiffel とRuby
まつもとさん、お返事ありがとうございます。 > (あ、適当な値 > を返すこともできたような。手元に本がないな)。 OOSC1 邦訳版 7.10.5 によれば、EXCEPTIONS クラスを使ってコードを渡すことが できるようです。 (一応、Eiffelご存じない方のため、OOSC = Object Oriented Software Construction; 邦題 = オブジェクト指向入門(アスキー出版)、です。) しかし、Eiffel は rescue句をルーチンの最後にしか書けないという制約があります。 (なぜだろう?この制約のため同ページの quasi_inverse() という関数、関数内を 例外処理が飛び回るようになっていて、却ってわかりにくいと思いました。) さて、例外処理の実装として、 1) エラーコード(やメッセージやエラーオブジェクト)を伴うか否か 2) rescue句(Java/C++系 では catch ブロック)の最後で呼び出し側に伝搬するか否か 3) retryできるか否か 4) 任意の文やブロックで rescue句(Java/C++系 try-catch)が書けるか 5) 構文的に美しいか(かなり主観入っています。櫛形文法か try{}catch{}か という意味だとご理解下さい) というあたりで分類してみると、 1 2 3 4 5 Eiffel *1 y y n y Java/C++ y ? ? y n Ruby y n y y y Ada ? ? ? ? y (other??) ? ? ? ? ? (? の部分、どなたか分かる方いますでしょうか?)。 *1 EXCEPTIONS クラスを継承して使う ...となるでしょうか。1)...5) 全部 yes が W 的には「あるといい」例外処理かな、 と考えています。Ruby は私の理想にかなり近いので 2) についてはどうかなと思い、 本屋や Ruby-lang のサイトで事前にチェックはしてみたのですが、rescue句に 到達するとどうなるかは書かれてなかったので mail させていただいた次第です。 ただ、2) が yesである必要があるのかどうかは議論が分かれるところかと 思いますので、皆さんのご意見も聞かせていただけると参考になります。 DBC に基づけば 2) == y であるべきですが、こうやって表を眺めてみると、Java/C++, Ada, CLU, Lisp が全て 2) == n なら、DBC って制約がきつすぎる考えなのかな、 とも思えてきたもので(弱気)。 // W -- ML: langsmith quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
135 2004-10-07 00:06 [ttn3w7u2fs mx6.ttcn.] 例外処理:Eiffel とRuby 136 2004-10-07 00:41 ┗[matz ruby-lang.org ] -> 138 2004-10-07 11:29 ┗[ttn3w7u2fs mx6.ttcn.] 139 2004-10-07 12:35 ┣[matz ruby-lang.org ] 144 2004-10-07 21:49 ┃┗[randy mvd.biglobe.ne] 145 2004-10-07 22:04 ┃ ┗[matz ruby-lang.org ] 146 2004-10-08 21:59 ┃ ┗[randy mvd.biglobe.ne] 150 2004-10-11 00:16 ┃ ┗[ttn3w7u2fs mx6.ttcn.] 151 2004-10-11 00:52 ┃ ┗[matz ruby-lang.org ] 154 2004-10-13 00:00 ┃ ┗[ttn3w7u2fs mx6.ttcn.] 155 2004-10-13 01:30 ┃ ┗[matz ruby-lang.org ] 140 2004-10-07 14:23 ┣[takehiko eel.rdc.tos] 141 2004-10-07 14:33 ┃┗[matz ruby-lang.org ] 143 2004-10-07 16:50 ┃ ┗[takehiko eel.rdc.tos] 142 2004-10-07 15:20 ┣[shiro lava.net ] 156 2004-10-14 12:32 ┃┗[maeda-langsmith atus] 147 2004-10-08 22:21 ┗[ko1 atdot.net ] 148 2004-10-09 06:42 ┗[shiro lava.net ]