try catchは高速?

[戻る]
shin [E-Mail] 2002/10/17(木) 01:06:36
今、ある関数a,b,cがあるとします。cはbから、bはaから呼ばれるようにネストしています。

(1) try,catchをa内部に置き、a,b,cで起きたエラーを全てそこで処理するようなコード
    を書けば、エラー処理部分がすっきりします。
    が、try catchは遅いという事を耳にした為、この方法を使っていません。

(2) 上記の代わりに「関数値で呼び出し側にエラー発生を報告」する方法をとっています。
    が、a,b,cの各関数にif文を挿入する事になりコードが煩雑です。
    3重のネストではまだましですが、もっと深くなった時は煩雑さが増えて大変です。

上の2つのうち、一般的に実行速度が速いのはどちらなのでしょうか?
VisualBasic.NETの ある解説(Microsoft公式) では、TRY CATCH(という構文があるらしい)
を使った方がコードもすっきりするし速いと書いてありました。

実験してみたのですが、よく分からなかった為 質問させていただきました。
宜しくお願いします。

YuO [E-Mail] 2002/10/17(木) 03:20:29
条件によるでしょうが……。
基本的には(2)だと思います。
throwによるスタック巻き戻しは,if文の要素を多分に含んでいますので。
ただ,エラー処理が本来の処理から分離されるとか,
エラーを確実に処理させることができるというのは利点だと思います。

TRY-CATCHはMS拡張なのでお勧めできません。

アイススケーター 2002/10/17(木) 06:06:18
>実験してみたのですが、よく分からなかった為 質問させていただきました。

 実験する場合は、同じ場所をfor〜LOOPで10000回(回数は自由)処理し、
開始時間と終了時間の差で確認されたらいかがですか。

山本八郎 2002/10/17(木) 17:00:35
例外処理は例外的にしか起こらないハズですから、速度よりも判り易さではないでしょうか。

shin [E-Mail] 2002/10/18(金) 23:48:47
みなさん、どうもありがとうございました。
噂どおり、遅いという事が確認できました。

shin [E-Mail] 2002/10/18(金) 23:49:13
[[解決]]
チェック

古いスレッドには追加発言できません。