C#无法捕获StackOverflowException或查看它发生的位置

这个问题在这里已经有了答案:

  • C#捕获堆栈溢出异常9个答案

  • 你不能捕获真正的堆栈溢出异常,这就是为什么它不起作用。

    另请参阅此讨论。

    我不能回答你的第二个问题,除了说“这个程序真的搞砸了”之外。

    对于第三个问题:因为它在单独的线程中运行,所以它运行的代码量将根据您何时中断程序而有所不同。 我认为只有通过一些繁琐的逐行调试,或者大量的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