您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何处理AccessViolationException

如何处理AccessViolationException

在.NET 4.0中,运行时将作为Windows结构化错误处理(SEH)错误引发的某些异常作为损坏状态的指示符进行处理。这些受破坏状态异常(CSE)不允许被您的标准托管代码捕获。我不会在这里介绍原因或方式。阅读有关.NET 4.0框架中CSE的文章

http://msdn.microsoft.com/zh- CN/magazine/dd419661.aspx#id0070035

但是有希望。有几种方法可以解决此问题:

重新编译为.NET 3.5程序集,然后在.NET 4.0中运行它。

在配置/运行时元素下,将一行添加到应用程序的配置文件中: <legacyCorruptedStateExceptionsPolicy enabled="true|false"/>

使用HandleProcessCorruptedStateExceptions属性装饰要捕获这些异常的方法。有关详细信息,请参见http://msdn.microsoft.com/zh-cn/magazine/dd419661.aspx#id0070035

以前,我引用了一个论坛帖子获取更多详细信息。但是,由于Microsoft Connect已停用,因此,如果您有兴趣,以下是其他详细信息:

来自Microsoft CLR团队的开发人员Gaurav Khanna

此行为是设计导致的,这归因于CLR 4.0的一项功能,称为“损坏的状态异常”。简而言之,托管代码不应尝试捕获表示已损坏进程状态的异常,而AV就是其中之一。

然后,他继续参考HandleProcessCorruptedStateExceptionsAttribute和上面的文章上的文档。可以说,如果您正在考虑捕获这些类型的异常,那么绝对值得一读。

Access 2022/1/1 18:14:00 有598人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶