我怎样才能在递归代码上捕获stackoverflow异常的根

leo*_*ora 6 c# stack-overflow recursion

我有以下递归代码,我得到一个stackoverflow异常.我无法弄清楚根本原因,因为一旦我得到异常,我在Visual Studio中得不到完整的调用堆栈.

这个想法是有组织团队加入更大的"主要"团队.

有没有人看到下面这段代码的缺陷可能是罪魁祸首?

    private Unit GetUnit(Unit organisationalUnit)
    {
        if (organisationalUnit.IsMainUnit)
        {
            return organisationalUnit;                
        }

        if (organisationalUnit.Parent == null)
            return null;

        return GetUnit(organisationalUnit.Parent);
    }
Run Code Online (Sandbox Code Playgroud)

Ant*_*hyy 5

  1. 你可能有一个单位是它自己的父母,或者你可能有一个父母的循环(例如ABCA).也就是说,问题可能出在数据上,而不是代码本身.
  2. 验证的干将IsMainUnitParent不叫GetUnit.


Mau*_*Mau 4

根总是有吗Parent == null?尝试检查

if (organisationalUnit.Parent == organisationalUnit)
    return null;
Run Code Online (Sandbox Code Playgroud)