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)
您可以将try/catch块放在自己的方法中,并使用以下任何属性修饰该方法:
DebuggerStepThrough - 使调试器跳过该方法
DebuggerHidden - 从调试器隐藏方法(甚至不允许断点)
DebuggerNonUserCode - 前两个的组合