加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 21:35:00 所属栏目:百科 来源:网络整理
导读:对于某些背景信息,.NET 4.0默认情况下不再捕获CSE: http://msdn.microsoft.com/en-us/magazine/dd419661.aspx 我正在开发一个在新AppDomain中执行代码的应用程序.如果该代码抛出一个CSE,如果没有处理,该异常会冒泡到主代码.我的问题是,我可以安全地假设第二
对于某些背景信息,.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的代码的了解程度.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读