设定:
1)MSVS 2015,选项 - >调试器 - > “只是我的代码”已经过检查。
2)此示例代码放在某个类中并在启动期间调用:
Teacher: {{$data->name}}
3)启动调试器
预期结果是TestIgnoreException()以静默方式运行并返回false。
实际结果是调试器在TestIgnoreException()中停止,即使在该范围内不应该处理任何异常。
4)也使用[DebuggerHidden]重新尝试,结果相同。
动机:
动机适用于某些不受您控制的API不提供“Try”方法而只是通过使用异常来指示失败的情况。
众多此类示例中的一个是.NET TcpClient.Connect(主机,端口)。假设一个程序总是在启动期间测试一些连接,调试器不应该每次都停在这个特定的代码段上。
使用标准的“抛出时中断”异常复选框并不好,因为它按类型全局工作。它无法配置为在本地工作。检查代码的其他开发人员也应该自动跳过异常。
答案 0 :(得分:8)
神秘解决了。由于添加了异常处理优化,它确实是MSVS 2015中的一个新问题。
在该链接上发布了一个解决方法,用于禁用优化并启用旧行为。希望他们最终能够恢复对此的支持,包括优化。
reg add HKCU\Software\Microsoft\VisualStudio\14.0_Config\Debugger\Engine /v AlwaysEnableExceptionCallbacksOutsideMyCode /t REG_DWORD /d 1
相关问题:
Don't stop debugger at THAT exception when it's thrown and caught