在Visual Studio 2015中DebuggerStepThrough不再传递exception?

在早期版本的Visual Studio中,您可以使用[DebuggerStepThrough]属性来忽略特殊方法中的exception,该方法由于某种原因无法避免(例如网络exception或可能无法解析)。 (请参阅此主题: 抛出并捕获时,不要在调试器处停止调试此exception )

现在Visual Studio在没有属性的调用函数中向我显示exception,即使它已经被捕获和处理。

例:

static void Main(string[] args) { ExceptionalMethod(); } [DebuggerStepThrough] static void ExceptionalMethod() { try { throw new Exception("BAM"); } catch { } } 

此代码不应在VS 2013或更低版本中停止。 与DebuggerHidden相同的行为。

是否有一个新技巧可以忽略这一个例外? 不忽略那种类型的所有例外情况?

由于“在调试.NET代码时提高了性能”,Microsoft停用了该function。

在Visual Studio 2015 Update 2中,可以通过更改注册表项来关闭/提高性能。

在命令行中输入以执行此操作:

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

资料来源: https : //blogs.msdn.microsoft.com/visualstudioalm/2016/02/12/using-the-debuggernonusercode-attribute-in-visual-studio-2015/