【发布时间】:2017-02-27 21:06:25
【问题描述】:
我很困惑。 AccessViolationException 是由第三方库随机生成的。它可以安全地被忽略,所以我按照建议的here 将调用方法包装在[HandleProcessCorruptedStateExceptions] 属性中。
我正在使用 .NET Framework 4.6.2 和 Visual Studio 2015 Update 3。我可能错过了什么?
【问题讨论】:
-
不应该 [HandleProcessCorruptedStateExceptions] 无论传递的对象如何工作吗?有什么关系?
-
呃,等等,它成功了。该异常并未像 CSE 通常那样终止您的程序。您承诺您将使用该属性处理异常,但您没有。注意不要滥用该属性,您不能再次调用该第 3 方库。这要求你要么终止你的程序并给出一个体面的错误报告(订阅 AppDomain.UnhandledException 事件),要么设置一个静态 bool 变量来抑制对该库的任何进一步调用。请记住,调试器总是在引发事件之前介入。
-
@HansPassant 你完全正确! (事实上,毫不夸张地说,这几乎总是如此,因为在我看来,您是这里最聪明的人之一。)在
AccessViolationException之后,除了终止进程之外,没有什么是真正安全的了。我没有在回答中提到您的预防性警告,因为 OP 表示忽略此异常是安全的,我只是想尊重这一点。 (我假设他已经分析了异常的原因。)
标签: c# visual-studio debugging exception access-violation