在Visual Studio 2015中,DebuggerStepThrough不再传递异常

本文关键字:不再 异常 DebuggerStepThrough Visual Studio 2015 | 更新日期: 2023-09-27 18:05:38

在早期版本的Visual Studio中,您可以使用[DebuggerStepThrough]属性来忽略由于某些原因无法避免的特殊方法中的异常(例如网络异常或解析失败)。(参见此线程:当抛出并捕获了'时,不要在该异常处停止调试器)

现在Visual Studio显示了调用函数中没有属性的异常,即使它已经被捕获并处理了。

的例子:

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

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

是否有一个新的技巧来忽略这一个异常?当然不能忽略所有的例外情况?

在Visual Studio 2015中,DebuggerStepThrough不再传递异常

微软取消了该功能,原因是"调试。net代码时有益的性能改进"。

在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/