gpt4 book ai didi

c# - 跨 AppDomain 的损坏状态异常 (CSE)

转载 作者:行者123 更新时间:2023-11-30 12:49:47 24 4
gpt4 key购买 nike

对于一些背景信息,.NET 4.0 默认不再捕获 CSE:http://msdn.microsoft.com/en-us/magazine/dd419661.aspx

我正在开发一个在新 AppDomain 中执行代码的应用程序。如果该代码抛出 CSE,如果未处理,则异常会冒泡到主代码。我的问题是,我是否可以安全地假设第二个 AppDomain 上的 CSE 不会破坏主 AppDomain 中的状态,从而退出第二个 AppDomain 并继续运行主 AppDomain?

最佳答案

在损坏状态异常的上下文中,一般来说,您不能再假定任何 为真。这些异常的要点是发生了一些事情,通常是由于有缺陷的非托管代码,这违反了 Windows 或 CLR 对内存结构所做的一些核心假设。这意味着,从理论上讲,CLR 用来跟踪内存中存在哪些应用程序域的结构可能已被破坏。导致 CSE 的各种事情通常表明事情已经发生了灾难性的错误。

说了这么多,在某些情况下,您也许可以确定从特定异常继续是安全的。例如,EXCEPTION_STACK_OVERFLOW 可能是可恢复的,而 EXCEPTION_ACCESS_VIOLATION 通常表示 Windows 在有机会搞砸任何事情之前发现了潜在的错误向上。是否愿意冒险取决于您,这取决于您对首先引发 CSE 的代码了解多少。

关于c# - 跨 AppDomain 的损坏状态异常 (CSE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10761822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com