【问题标题】:Catching an AccessViolationException捕获 AccessViolationException
【发布时间】:2012-06-06 14:02:50
【问题描述】:

每次库打开某个文件时,第三方库都会导致 AccessViolationException。我正在尝试遍历数千个文件,因此捕获异常,将项目添加到不打开并继续的文件列表中会很有用。但是,异常不会被 catch(Exception e) 块捕获,也不会被特定的 catch(AccessViolationException ave) 块捕获。

在对另一位 question 的评论中,John Saunders 建议可以捕获 AccessViolationException,但不应该这样做。

程序员要做什么?

【问题讨论】:

  • 你怎么知道访问冲突没有破坏你的应用程序的内存?你没有,所以你不能忽略它并继续。
  • 您是否尝试过使用AppDomain.UnhandledExection 来捕获应用程序域中未处理的任何内容 - 这将使您有机会询问异常。当您确信自己知道发生了什么时,您可以删除它。

标签: c# c#-4.0 access-violation


【解决方案1】:

您可能不想捕获AccessViolationException,唯一的原因是您不能保证异常没有破坏您的应用程序的状态。

默认情况下,由于上述原因,执行不会到达 catch 块。如果您明确要处理进程破坏异常,则需要使用HandleProcessCorruptedStateExceptions 属性装饰您的类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多