当前位置:  开发笔记 > 编程语言 > 正文

最终没有在.net中执行的条件try..finally阻止

如何解决《最终没有在.net中执行的条件try..finally阻止》经验,为你挑选了3个好方法。

基本上我听说某些条件会导致.net超越finally块.有谁知道这些条件是什么?



1> Haacked..:

两种可能性:

StackOverflowException

ExecutionEngineException

当存在a时,finally块将不会被执行,StackOverflowException因为堆栈上没有空间来执行更多代码.当有一个时ExecutionEngineException,它也不会被调用,这可能是由于呼叫而产生的Environment.FailFast().


OutOfMemoryException和ThreadAbortException怎么样?
也许值得注意的是ExecutingEngineException可能来自对Environment.FailFast()的调用.
BTW我认为它应该是ExecutionEngineException而不是ExecutingEngineException?

2> Gishu..:

除非CLR爆炸并且因ExecutingEngineException而崩溃(我在.net 1.1天中看到了一些只有适当数量的COM Interop :).我认为最终应该总是执行.



3> Chris..:

您可以得到这样的情况:try块中的代码导致在输入try块之前抛出SecurityException(而不是在调用包含方法时抛出异常(请参阅http://msdn.microsoft.com/en-us) /library/fk6t46tz(VS.71).aspx)),在这种情况下,你甚至都不会进入try块,因此从不调用finally块中的代码.

其他可能性包括StackOverflowException和ExecutingEngineException.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有