![](/img/trans.png)
[英]Visual Studio 2013 “break on handled exceptions” not working, not breaking
[英]Visual Studio 2015 unexpectedly breaking on handled exceptions
一张图片值得一提,以下是可能的:
可以看出,Visual Studio 2015(最新版本)中断了Exception Settings
下的Common Language Runtime Exceptions
,选中了Tools > Options > Debugging
下的Enable Just My Code
,并且明确处理了异常(在try / catch块中) )。
该行失败并导致中断是对外部API的调用(这有点错误,因此是try / catch块)。
我错过了一些可以证明休息的理由或者这是一个错误吗? 我认为这个其他问题会提供一些见解,但遗憾的是它没有帮助(处理异常因此我们不需要Continue When Unhandled in User Code
选项中启用额外的“ Continue When Unhandled in User Code
。
这个例外有一个特例,我猜这里适用。 来自文档 :
AccessViolationException和try / catch块
从.NET Framework 4开始,如果异常发生在公共语言运行库保留的内存之外,则结构化异常处理程序中的catch语句不会处理公共语言运行库抛出的AccessViolationException异常。 若要处理此类AccessViolationException异常,应将HandleProcessCorruptedStateExceptionsAttribute属性应用于引发异常的方法。 此更改不会影响用户代码抛出的AccessViolationException异常,这些异常可以继续被catch语句捕获。 对于为.NET Framework的先前版本编写的代码,您希望在.NET Framework 4上重新编译和运行而不进行修改,您可以将该元素添加到应用程序的配置文件中。 请注意,如果已为AppDomain.FirstChanceException或AppDomain.UnhandledException事件定义了处理程序,则还可以接收异常通知。
正如文档所说,解决方案是将HandleProcessCorruptedStateExceptionsAttribute添加到Start()
方法。 如果不可能(例如,这是通过库提供的),我猜你可以添加一个包装调用的方法,并将该属性添加到该包装方法。
您可以在以下链接中查看答案如何处理AccessViolationException
由于许多原因,在.NET 4.0中,运行时将一些异常处理为Windows结构化错误处理(SEH)错误,作为损坏状态的指示符,并且这些异常不能作为常规异常捕获。
请享用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.