微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 跨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的代码的了解程度.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐