当它被抛出并被捕获时,不要停止debugging器

在工具/exception中,我设置了当抛出exception时debugging器停止的选项。 是否被抓到。

如何排除该规则的例外情况? 在我的代码中有一个被捕获的exception是程序逻辑的一部分。 所以我显然不希望这个exception在每次命中时停止debugging器。

例如:我想忽略行344上的nullreferenceexception(被捕获)。 我想停止所有其他例外

如果我记得正确的话,你可以在包含代码的方法上使用一个DebuggerStepThrough属性,你不想让exception触发。 我想你可以隔离在一个方法中引发恼人的exception的代码,并用属性装饰它。

DebuggerHidden是你的朋友!

公共语言运行时不附加任何语义到这个属性。 它被提供给源代码debugging器使用。 例如,Visual Studio 2005debugging器不会停在标有该属性的方法中,也不允许在该方法中设置断点。 由Visual Studio 2005debugging器识别的其他debugging器属性是DebuggerNonUserCodeAttribute和DebuggerStepThroughAttribute。

在VS2010上testing,效果很好。

虽然DebuggerStepThrough似乎也适用于某些特定的debugging器版本,但DebuggerHidden似乎适用于更广泛的基于两种解答的注释的情况。

请注意,这两个选项当前不能用于迭代器块方法或asynchronous/等待方法 。 这可以在Visual Studio的更新更新中修复。

DebuggerStepThrough是用来防止debugging器在有try / catch的方法中被中断的。

但只有在Visual Studio的debugging选项(菜单工具/选项,节点debugging/常规)的常规设置中没有取消选中“启用只是我的代码(仅pipe理)

有关该属性的更多信息,请参阅http://abhijitjana.net/2010/09/22/tips-on-debugging-using-debuggerstepthrough-attribute/

DebuggerHidden将简单地阻止debugging器显示抛出exception的方法。 相反,它会显示堆栈中没有标记该属性的第一个方法…

其他答案(以及其他答案,如DebuggerNonUserCode属性)中指定的属性在Visual Studio 2015中默认不再以相同的方式工作。与旧版本的VS不同,debugging器将打破具有这些属性的方法市场中的exception。 要closures改变其行为的性能改进,您需要更改registry设置:

 reg add HKCU\Software\Microsoft\VisualStudio\14.0_Config\Debugger\Engine /v AlwaysEnableExceptionCallbacksOutsideMyCode /t REG_DWORD /d 1 

更多信息可以在Visual Studio博客上find。

(这应该是最好的回答,但我没有足够的代表)

您无法单独列出在代码中的特定位置引发的exception。 但是,您可以禁用特定types的豁免。

如果你自己的代码抛出有问题的exception,我会使它成为一个自定义的exception,从任何适合派生,然后禁用debugging打破这种派生types。

将系统禁用作为NullReferenceException禁用将会影响整个系统,这在开发过程中当然是不可取的。

请注意,例外情况有两种突破行为:

  • 投掷:如果select,抛出此types的exception一旦中断
  • 用户未处理:如果select,只有当这种types的exception不被try / catch处理时才会中断。

你可以删除NullReferenceException中的'Thrown'的检查,这会给你在每次系统通过你的代码中有问题的行时不会中断的好处,但是如果你有一些未处理的NullReferenceexception,系统。