图像值得很多,以下是可能的:
可以看出,Visual Studio 2015(最新版本)在Common Language Runtime Exceptions
下Exception Settings
取消选中,Enable Just My Code
下的Tools > Options > Debugging
被检查,并且异常清楚处理(在try / catch块中)。
该行失败并导致中断是对外部API的调用(这有点儿错误,因此是try / catch块)。
我是否遗漏了一些可以证明休息的理由或这是一个错误?我认为this other question会提供一些见解,但遗憾的是这里没有帮助(处理异常因此我们不需要启用其他Continue When Unhandled in User Code
选项。
答案 0 :(得分:1)
此异常有一个特殊情况,我猜这里适用。来自docs:
AccessViolationException和try / catch blocks
从.NET Framework 4开始,如果异常发生在公共语言运行库保留的内存之外,则结构化异常处理程序中的catch语句不会处理公共语言运行库抛出的AccessViolationException异常。若要处理此类AccessViolationException异常,应将HandleProcessCorruptedStateExceptionsAttribute属性应用于引发异常的方法。此更改不会影响用户代码抛出的AccessViolationException异常,这些异常可以继续被catch语句捕获。对于为.NET Framework的先前版本编写的代码,您希望在.NET Framework 4上重新编译和运行而不进行修改,您可以将该元素添加到应用程序的配置文件中。请注意,如果已为AppDomain.FirstChanceException或AppDomain.UnhandledException事件定义了处理程序,则还可以接收异常通知。
正如文档所说,解决方案是将HandleProcessCorruptedStateExceptionsAttribute添加到Start()
方法。如果不可能(例如,这是通过库提供的),我猜你可以添加一个包装调用的方法,并将该属性添加到该包装方法。
答案 1 :(得分:0)
您可以在以下链接中查看答案 How to handle AccessViolationException
由于许多原因,在.NET 4.0中,运行时将一些异常处理为Windows结构化错误处理(SEH)错误,作为损坏状态的指示符,并且这些异常不能作为常规异常捕获。
享受