在 .NET 应用程序中使用 COM 对象时,强大的异常处理至关重要。 然而,AccessViolationException
带来了独特的挑战,特别是当 Visual Studio 调试器绕过 catch
块时。
在 .NET 4.0 中,AccessViolationException
属于损坏状态异常 (CSE) 类别。这些异常表示进程状态受到损害,通常无法被标准托管代码捕获。
有几种方法可以解决这个问题:
目标 .NET 3.5: 重新编译 .NET 3.5 应用程序并在 .NET 4.0 环境中执行它。
App.config 修改: 将以下条目添加到应用程序的配置文件 (app.config
):
<code class="language-xml"> <legacyCorruptedStateExceptionsPolicy enabled="true" /></code>
HandleProcessCorruptedStateExceptions
属性: 使用 HandleProcessCorruptedStateExceptions
属性来标记用于处理 CSE 的方法。 详细指导请参考:https://www.php.cn/link/76c0df0665c83c5944ae67cae2739f7e(注意:此链接可能已过时。在当前的 Microsoft 文档站点上搜索“HandleProcessCorruptedStateExceptions”以获取更新信息。 )
正如 Microsoft CLR 团队的 Gaurav Khanna 所指出的,无法捕获 .NET 4.0 中的某些异常是故意的。 这些异常表明进程状态受到严重损害。 选择适当的处理技术取决于您的应用程序的需求和风险承受能力。 在尝试捕捉 CSE 之前,请仔细考虑其影响。
以上是我如何有效地处理.NET应用程序中的AccessViolationException?的详细内容。更多信息请关注PHP中文网其他相关文章!