C# アプリケーションでアサーションが失敗するたびに、例外がスローされ、エディターがその場所にジャンプするようにしたいと考えています。ただし、代わりに中止/再試行/無視のメッセージ ボックスが表示されます。この動作を制御する方法はありますか?
質問する
399 次
2 に答える
3
.Fail()
いずれかのメソッドで例外をスローするカスタム TraceListener を追加できます。
public class ThrowListener : TextWriterTraceListener
{
public override void Fail(string message)
{
throw new Exception(message);
}
public override void Fail(string message, string detailMessage)
{
throw new Exception(message);
}
}
おそらく、メッセージと detailMessage の両方を受け取る独自の Exception タイプを派生させるので、例外がどこから来たのかがより明確になります。
デバッガーが .Assert() 呼び出しに直接移動する可能性があるため、呼び出しスタックを .Assert() 呼び出しにステップアップする必要がありますthrow
。
次のように追加できます。
Debug.Listeners.Insert(0, new ThrowListener());
于 2013-01-24T02:46:06.203 に答える
2
直接ではありません: それが Debug.Assert の機能です。ドキュメントを見る
http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.aspx
おそらく、Debug.Assert 以外のものを使用したいですか? 処理できない場合に単に例外をスローするか、または必要に応じてアプリケーション定義の onError ハンドラーを呼び出すか?
または、リスナーを追加してそのリスナーにフックすることで、必要なものを取得できる場合があります。ドキュメントを参照してください。
于 2013-01-24T02:42:42.577 に答える