6

NullReferenceException が定期的にスローされる (予期される動作) がキャッチされる C# コードの関数があります。コードのこの特定のセクションについて、この例外で中断しないように Visual Studio デバッガーに指示する方法はありますか?

編集コードの他の場所でこの例外を中断する必要がありますが、同じ関数内では中断する必要はありません。

4

3 に答える 3

12

私が正しく理解していて、あなたがやろうとしていることがいくつかの NullReferenceException(s) をデバッグすることであるが、デバッグ中に他の例外を一時的に無視したい場合は、DebuggerNonUserCode属性でデバッガーに無視させたい関数をマークすることでこれを行うことができるかもしれません。

[DebuggerNonUserCode]
private void MyMethod()
{
    // NullReferenceException exceptions caught in this method will
    //  not cause the Debugger to stop here..
}

これは、例外が上記のメソッドでキャッチされた場合にのみ機能することに注意してください。NullReferenceExceptionデバッガーが常に例外で中断するように設定されている場合、デバッガーが中断することはありません。そして、これはメソッドでのみ機能し、メソッド内のコードの任意のセクションでは機能しません..

于 2013-03-07T15:34:00.463 に答える
2

例外が呼び出し元にバブルアップしないと仮定すると、これはDebuggerHiddenAttributeで実現できます。

備考より

Visual Studio 2005 デバッガーは、この属性でマークされたメソッドで停止せず、メソッドにブレークポイントを設定できません。

    [DebuggerHidden]
    private static void M()
    {
        try
        {
            throw new NullReferenceException();
        }
        catch (Exception)
        {
            //log or do something useful so as not to swallow.
        }            
    }
于 2013-03-07T16:01:57.663 に答える
0

これを行うことはできますが、ソリューション内のすべての例外に影響します。

Debug -> Exceptions -> Find... "Null Ref"、チェックを外します。

于 2013-03-07T15:34:12.127 に答える