一张图片值得很多文字,以下怎么可能:
可以看出,Visual Studio 2015(最新版本)在Common Language Runtime Exceptions
under Exception Settings
未选中,Enable Just My Code
under Tools > Options > Debugging
检查,并且明确处理异常(在 try/catch 块内)。
该行失败并导致中断是对外部 API 的调用(这有点错误,因此需要 try/catch 块)。
我是否遗漏了一些可以证明中断合理性的东西,或者这是一个错误?我想这另一个问题 https://stackoverflow.com/questions/31549030/visual-studio-2015-break-on-unhandled-exceptions-not-working会提供一些见解,但不幸的是它在这里没有帮助(异常已处理,因此我们不需要启用额外的Continue When Unhandled in User Code
option.
这个例外有一个特殊情况,我猜这也适用于这里。来自docs https://msdn.microsoft.com/en-us/library/system.accessviolationexception(v=vs.110).aspx:
AccessViolationException 和 try/catch 块
从 .NET Framework 4 开始,如果公共语言运行时引发的 AccessViolationException 异常发生在公共语言运行时保留的内存之外,则结构化异常处理程序中的 catch 语句不会处理该异常。要处理此类 AccessViolationException 异常,应将 HandleProcessCorruptedStateExceptionsAttribute 属性应用于引发异常的方法。此更改不会影响用户代码抛出的 AccessViolationException 异常,该异常可以继续由 catch 语句捕获。对于为早期版本的 .NET Framework 编写的代码,如果您希望在 .NET Framework 4 上重新编译和运行而不进行修改,您可以将该元素添加到应用程序的配置文件中。请注意,如果您已为 AppDomain.FirstChanceException 或 AppDomain.UnhandledException 事件定义了处理程序,您还可以收到异常通知。
正如文档所说,解决方案是添加HandleProcessCorruptedStateExceptionsAttribute https://msdn.microsoft.com/en-us/library/system.runtime.exceptionservices.handleprocesscorruptedstateexceptionsattribute(v=vs.110).aspx to the Start()
方法。如果不可能(例如,这是通过库提供的),我猜您可以添加一个包装调用的方法并将属性添加到该包装方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)