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的代码的了解程度. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- objective-c – 为什么((self = [super init]])工作,但(!(
- 飞镖 – Re:在颤动中创建一个下拉按钮
- 设计原则之单一职能原则
- Confluence 6 Oracle 创建数据库用户
- c# – 在.NET Core中替换AppDomain.GetLoadedAssemblies()?
- ruby-on-rails – 在rails XML请求中设置PUT方法
- Flex弹出窗口实现和子父Flex窗口的数据交换
- 如何在Oracle SQL中从BLOB获取文本内容
- Ruby Twitter Gem,超出了速率限制
- .net – AjaxControlToolkit Asyncfileupload,主页无法正常