[前][次][番号順一覧][スレッド一覧][生データ]

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      ]