2009-04-27 13 views
1

私がクラスライブラリを書いていて、そのライブラリのある時点で、例外をキャッチしてそれを処理するコードがある場合、私のライブラリを使用している誰もがそれが起こったことを知ることは望ましくありません。外界から見えない。C#で例外が発生するのを防ぐ方法は?

ただし、Visual Studioで「Catch Throw Exceptions」が有効になっている場合は、例外になります。

これを避ける方法はありますか?

答えて

2

[DebuggerHidden]アトリビュートを投げる可能性があるのは、例外。他の人が指摘したように、例外を完全に避ける方がよいが、この属性はあなたが望むものを達成するだろう。

+0

ありがとうございました - への上でこれを渡しますProject Whiteの人々は、呼び出されているオブジェクトを破棄するUIオートメーションコードを呼び出すたびに例外を表示する必要はありません。 –

7

いいえこれは仕様です:開発者として、私はライブラリコードでスローされた例外を見ることができるように(そしてうまくいけばそれを避けるために) "Catch Thrown Exceptions"をオンにして実行します。現在の状況は、.NETフレームワークの独自のライブラリにも等しく適用されます。

最初の場所に例外をスローするのを避けるのが最善の方法です。副次的なメリットとして、例外をスローするとパフォーマンスに顕著な影響を与えるため(例外的な状況でのみ使用する必要があるため)、ライブラリコードが高速になります。

0

これを防ぐことはできません。誰かがいつもプロセスにデバッガを付けて、何が起こっているのかを監視することができます。

例外を削除してエラー処理を自分で行うこともできますが、例外的な処理システムを作り直すことが何らかの形で行われているため、実際にはこれをお勧めしません。

もちろん、例外をキャッチしているコードとコードが離れていて、まったく解き放たれていない場合に限り、このことが当てはまります。それらが密接に結合されている場合は、実際にコールが成功するかどうかを確認し、この場合のみコールする必要があります。例外が例外的な場合を意図していることを常に思い出してください。操作が成功するかどうかを確認できる通常の制御フローではありません。

0

Tim Robinsonは、あなたのライブラリからスローされた例外を表示するユーザーを制御する方法がないことを示しています。彼の答えは良いので、私はそれをrehashしません。

プログラムフロー制御などの例外使用して(のように聞こえる)のアドレス指定するときに参考できるように、ポストのカップルが上ここにあります

Catching exceptions as expected program execution flow control?
Why are .Net programmers so afraid of exceptions?

関連する問題