私は非常に大規模なレガシー コードベースに取り組んでいます。常に最適に維持されているとは限らないため、制御フローから、またはその他のさまざまな理由で例外が使用されることがあります。また、ほとんど避けられない場合もあります。たとえば、ファイルをイメージとして渡し、例外がスローされないかどうかを確認する以外に、ファイルが有効な .ico イメージであるかどうかを確認するにはどうすればよいでしょうか?
私はできる限りこの種のものをリファクタリングしますが、ほとんどの場合、リファクタリングするにはコストがかかりすぎてほとんど利益が得られません。これらの偽の例外は、デバッグ時に非常に煩わしくなります。プログラムがクラッシュしないようにすべての例外をキャッチし、ほとんどの例外をキャッチして、もう少しユーザーフレンドリーなものを表示します。そのため、デバッグ中にコードの一部が をスローするApplicationException
と、最終的に実際のバグに到達する前に、そのタイプの例外が 50 回スローされる可能性があります。ほとんどの場合、これらの偽の例外は、コードの 1 つの部分 (多くの場合 1 行) に集中しています。その行からスローされた例外を無視するようにVisual Studioを取得する方法はありますが、実際の問題である例外で停止しますか? または、この種のデバッグのフラストレーションを防ぐために他にできることはありますか?
私の問題を説明するために、次のようなものを想像してください。
for(int i=0; i<foo; i++)
{
try
{
FooBar(i); //this function throws NullReferenceException sometimes
}catch {} //ignore it because we don't care if it failed
}
....
var tmp=Bar as FooType; //this cast fails so tmp is null
tmp.Meh(); //throws exception here. This is a bug, we should've checked for null
NullReference がどこにあるかを把握したい場合は、基本的にFooBar
呼び出しを過ぎるまで F5 を押し続けます。これはせいぜい面倒で、エラーが発生しやすい