调试时是否可以完全忽略catch块?

gre*_*b64 9 .net c# debugging exception try-catch

我在WinForms(.net 3.5)中工作,并拥有以下代码行:

     HitTestResult result;
     try
     {
        result = this.HitTest( e.X, e.Y, ChartElementType.DataPoint);
     }
     catch(Exception e)
     {
        //This happens, we don't care!
     }
Run Code Online (Sandbox Code Playgroud)

我无法控制HitTest是否会抛出异常,但如果确实如此,我绝对不在乎.

是否可以禁止我的IDE停止在此SPECIFIC catch块?我知道我可以禁用它可能抛出的System.FormatException(从Debug-> Exceptions菜单,但这有点矫枉过正.

谢谢!

小智 16

您可以使用DebbugerStepThrough属性跳过该行.来自MSDN:

指示调试器逐步执行代码而不是单步执行代码.

例如:

[DebuggerStepThrough]
public void MyMethod()
{
    HitTestResult result;
    try
    {
        result = this.HitTest(e.X, e.Y, ChartElementType.DataPoint);
    }
    catch (Exception e)
    {
        //This happens, we don't care!
    }
}
Run Code Online (Sandbox Code Playgroud)


Bro*_*ass 10

如果您将代码分解为一个单独的方法,您可以使用它来装饰它,DebuggerStepThroughIDE将不会停止:

[DebuggerStepThrough]
public void SomeMethod()
{
    HitTestResult result;
    try
    {
        result = this.HitTest(e.X, e.Y, ChartElementType.DataPoint);
    }
    catch (Exception e)
    {
        //This happens, we don't care!
    }
}
Run Code Online (Sandbox Code Playgroud)


Igb*_*man 6

您可以将try/catch块放在自己的方法中,并使用以下任何属性修饰该方法:

DebuggerStepThrough - 使调试器跳过该方法

DebuggerHidden - 从调试器隐藏方法(甚至不允许断点)

DebuggerNonUserCode - 前两个的组合