【问题标题】:Configuring Visual Studio Debugger to Not Break on Exceptions?将 Visual Studio 调试器配置为不中断异常?
【发布时间】:2011-12-09 04:47:17
【问题描述】:

发生异常时,Visual Studio 的调试器可以立即中断应用程序的执行。 例如(一个琐碎的):

try{
    a= b/0; // Faulty code
}
catch(.){
    printf("I know the code above is faulty.");
}

当您执行程序时,Visual Studio 总是在错误代码处中断。如果 C++ try{} catch {} block 出现异常,如何将其配置为不中断?

【问题讨论】:

  • “从try{} catch{} block 产生的异常”是什么意思?在这种情况下,我无法弄清楚您试图使用“spawn”这个词是什么意思。
  • (在问题中包含一个[更完整的]样本通常是有益的。)
  • 在标签中也包含语言 :) 它是托管还是非托管 C++?

标签: visual-studio debugging try-catch


【解决方案1】:

编辑:以下适用于 C#/CLR。我不知道 [unmanaged] C++ 代码是否有等价物。


你不能——选项是“抛出时中断”或“未处理时中断”。

然而,可以做的是,整个方法可以用DebuggerNonUserCode属性注释。使用此注解,调试器不会因方法内生成和处理的异常而中断。 (它仍然会因方法传播out的异常而中断。)

公共语言运行时不为该属性附加任何语义。它供源代码调试器使用。例如,在 Visual Studio 2005 [和 2010] 中,调试器不会在调试器窗口中显示具有此属性的元素,不会在具有此属性的方法中停止 [包括从被调用方法引发异常时] ,并且不允许在方法中设置断点

谨慎使用:)

或者,如果适用的话,简单地排除某些类别的异常不会被调试器捕获可能是有益的,因为它是一种侵入性较小的方法。

编码愉快。

【讨论】:

    猜你喜欢
    • 2020-03-02
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多