繁体   English   中英

Visual Studio 2015意外地破坏了处理的异常

[英]Visual Studio 2015 unexpectedly breaking on handled exceptions

一张图片值得一提,以下是可能的:

Visual Studio 2015打破它不应该

可以看出,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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM