C#无法捕获StackOverflowException或查看它发生的位置
这个问题在这里已经有了答案:
你不能捕获真正的堆栈溢出异常,这就是为什么它不起作用。
另请参阅此讨论。
我不能回答你的第二个问题,除了说“这个程序真的搞砸了”之外。
对于第三个问题:因为它在单独的线程中运行,所以它运行的代码量将根据您何时中断程序而有所不同。 我认为只有通过一些繁琐的逐行调试,或者大量的Debug.WriteLine()才能实现这一点。
1)从.NET Framework 2.0版开始,StackOverflowException对象不能被try-catch块捕获,并且相应的进程默认终止。 因此,建议用户编写代码来检测和防止堆栈溢出。 例如,如果您的应用程序依赖于递归,请使用计数器或状态条件来终止递归循环。 请注意,承载公共语言运行库(CLR)的应用程序可以指定CLR卸载发生堆栈溢出异常的应用程序域,并让相应的进程继续。 有关更多信息,请参阅ICLRPolicyManager接口和主机概述。 (http://msdn.microsoft.com/en-us/library/system.stackoverflowexception.aspx)
链接地址: http://www.djcxy.com/p/80761.html上一篇: C# cannot catch StackOverflowException or see where it happened
下一篇: How to create a non