有时,当我运行单元测试时,测试运行程序会抛出一个StackOverflowException。有没有办法看看哪个测试可能会导致问题。因为我找不到问题的所在。
有小费吗?还是造成这个问题的一般原因?
发布于 2018-08-24 09:52:36
来自StackOverflowExceptions上的MSDN页面。
在.NET Framework1.0和1.1中,您可以捕获一个StackOverflowException对象(例如,从无限递归中恢复)。从.NET Framework2.0开始,您无法捕获带有try/catch块的StackOverflowException对象,默认情况下相应的进程将终止。因此,您应该编写代码来检测和防止堆栈溢出。例如,如果应用程序依赖于递归,则使用计数器或状态条件终止递归循环。下面的示例使用计数器确保对Execute方法的递归调用次数不超过MAX_RECURSIVE_CALLS常量定义的最大值。
因此,这使得Resharper也很难捕获StackOverflowException。您应该检查您的代码,看看是否有没完没了的递归调用,例如方法、函数、属性。除此之外,您还可以尝试我共享的MSDN链接中的代码。但你没有其他选择。
https://stackoverflow.com/questions/51999988
复制相似问题