4

C# アプリケーションでアサーションが失敗するたびに、例外がスローされ、エディターがその場所にジャンプするようにしたいと考えています。ただし、代わりに中止/再試行/無視のメッセージ ボックスが表示されます。この動作を制御する方法はありますか?

4

2 に答える 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 に答える