1

我正在调试代码中的异常,并且我的调试器设置为在出现异常时中断。

我希望我的调试会话在我的代码的某个部分而不是另一个上进行异常中断,你知道我可以在我的代码中编写一个参数(或其他)来告诉调试器不要异常中断在这部分代码上?

我调试的异常是API的同类型异常,无法按类型过滤。

谢谢

ps:请注意我知道“调试/异常”,但这在我的情况下是没有用的,因为我不想过滤某种类型的异常,只在代码的一部分中过滤它们。

例子:

#region don't want to break at exception
Try
{
  //I don't want the debugger to break here
  ApiMethodThatThrowException();
}
Catch(Exception){}
#endregion
#region want to break at exception
Try
{
  //I want the debugger to break here
  ApiMethodThatThrowException();
}
Catch(Exception){}
#endregion
4

3 回答 3

3

除了@abelenky 的回答之外,我还想指出Exceptions,Visual Studio 肯定不会让您禁用(C++ Exceptions、、GPU Memory Access Exceptions等)。然后,您必须查看使用属性在调试器System.Diagnostics中绕过这些。Exceptions

DebuggerHiddenAttributeDebuggerStepThroughAttribute是可用于告诉调试器跳过某些代码部分的两个属性。

public string ConnectionString{
    [DebuggerStepThroughAttribute()]
    get { 
        // Implementation here; 
    }
}

以上示例取自: 使用属性提高质量..

[DebuggerHiddenAttribute]
static void Main(string[] args) {
    // Implementation here;
}
于 2013-10-01T17:52:58.560 回答
1

在 Visual Studio 菜单中,转到:

调试/异常...

在该对话框中,您可以选择调试器应在何时中断每种异常。
您可以选择它是否应该在第一次引发异常时中断,或者在它未处理时中断。
您还可以添加新类型的异常来中断(或不中断)。

这是一篇更详细的文章

于 2013-10-01T17:00:37.537 回答
0

从错误发生的地方,确保使用tryandcatch运算符。

无论您的损坏代码在哪里,您都可以简单地执行以下操作:

try {
  // Code here
} catch(Exception e) {
}

这将防止 Visual Studio 在过程中弹出错误。

于 2013-10-01T16:58:28.377 回答