有选择地忽略C#代码中抛出的异常

时间:2013-03-07 15:31:51

标签: c# debugging

我在C#代码中有一个函数,其中定期抛出NullReferenceException(预期行为),但是被捕获。有没有办法告诉Visual Studio调试器不要在我的代码的这个特定部分中断这个异常?

编辑我需要在我的代码中的其他地方中断这个异常,但不能在同一个函数中。

3 个答案:

答案 0 :(得分:12)

如果我理解正确,你要做的是调试一些NullReferenceException但想在调试时暂时忽略其他人,你可以通过标记你希望调试器忽略的函数来做到这一点。 DebuggerNonUserCode属性。

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

注意这只有在所述方法中捕获异常时才有效。如果您将调试器设置为始终在NullReferenceException异常中断,则只是它们不会导致调试器中断。而且这只适用于方法,而不适用于方法内的任意代码部分。

答案 1 :(得分:1)

假设异常没有冒泡到调用者,可以使用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.
        }            
    }

答案 2 :(得分:-1)

您可以执行此操作,但它确实会影响解决方案中的所有异常。

Debug -> Exceptions -> Find... "Null Ref",de-tick Thrown。

相关问题