C#って死滅しちゃうの? Part10
■ このスレッドは過去ログ倉庫に格納されています
0744デフォルトの名無しさん
NGNGありがと。
MemErrのエラーは上位ルーチンに丸投げしたければ
throw eだかしてfoo() MemErrと宣言すればよくって
純粋にバグがあったときだけ出る例外(AssertErr)は
宣言で明示しなければ毎回catchする必要も無い。ということかな。
C++の同等の機能ははっきり言って使い物になるとは思えないけど
(VCがサポートをしなかったのもうなずける)Javaのはそれなりに便利そうではあるね。
その上で思いつくままにデメリットを妄想してみる。
1.小物ツールでいちいちcatchしまくりたくない(プロジェクト単位でOffにできる?)
2.上位ルーチンへの丸投げの処理が半数以上を占めるとするとうんざりするかも
3.サブコードでswitch/caseする場合は無力(毎回e.errCode()の1,3,4,11に対応しなさい)
4.間にコールバック関数的な処理=ユーザーが後付で登録した処理がある場合は無力
5.で、結局明示できる例外の数はそれほど多くなく費用対効果の点で言語仕様としてthrows()導入するメリットは薄い。
C#&VSはIDEの機能として自動的に例外の種類をXMLドキュメントに出力して
コーディング時にはカーソルのあるブロックで発生しうる例外をインフォしてくれると嬉しいのかも。
■ このスレッドは過去ログ倉庫に格納されています