編集:私は答えのコードを見てきました:それらのどれも私が望むことをしません(私はチェックしました)。ネイティブの C# で私がやりたいことを行う方法はないようです。.NETがサポートしていることを考えると、それは災害ではなく、残念なことだと思います(受け入れられた回答を参照)。
皆さんありがとう。
このような c# コード (デバッガー以外では実行されないテスト フレームワークの一部) があり、スタックの巻き戻された部分でコードをデバッグするのが非常に面倒になるため、実際に例外をキャッチしないようにしています。
Bool bad = true;
try
{
MightThrow();
bad = false;
}
finally
{
if(bad) DoSomeLoggingOnFailure();
//// Does not catch!!!!
//// exception continues to unwind stack.
//// Note that re throwing the exception is NOT
//// the same as not catching it in the first place
}
これを行うためのより良い方法はありますか?
解決策は、キャッチされていない例外に関して、デバッガーの下でそれとまったく同じように動作する必要があります。最初のチャンス例外が 1 つだけ発生し、catch ブロックではなく、例外が最初にスローされた時点でデバッガーが中断する必要があります。
具体的には、キャッチされていない例外でデバッガーが in side MightThrow を停止する必要があります。
以下は、デバッガーが正しい場所でブレークしないため、機能しません。
try { ... } catch { throw; }
そして、これはスタック情報を失う (また、間違った場所で壊れる) ため、機能しません。
try { ... } catch(Exception e) { throw e; }
Dscope(failure)
でブロックを使用できることを知っていました