You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为父子循环检测函数生成正确的异常提示信息

问题:生成父子循环检测的正确异常提示信息

我想要实现一个可识别父子循环的函数,该函数至少接收childName、parentName两个参数,当设置的父子关系会产生循环时触发错误。例如传入(A,C)时,需输出异常信息"A is the parent of C"。我已经有了函数的实现思路,以下是Java代码示例:

private static void restrict_ParentChild_Loop(Object A, Object B) throws Exception {
    if (A.parent == null)
        return;
    if (A.parent.equals(B)) {
        throw new Exception("");
    } else {
        restrict_ParentChild_Loop(A.parent, B);
    }
}

核心问题:如何在Exception中生成正确的提示信息(如"A is the parent of C")。


解决方案

要生成符合要求的异常提示,关键是在检测到循环时,获取参与循环的两个节点的名称并拼接成指定格式的字符串。

首先,你需要确保传入的Object是一个包含名称属性(比如name)和parent引用的自定义类(比如命名为Node)。修改后的代码如下:

private static void restrictParentChildLoop(Node child, Node parent) throws Exception {
    if (child.parent == null) {
        return;
    }
    if (child.parent.equals(parent)) {
        // 拼接异常提示:父节点名称 + " is the parent of " + 子节点名称
        throw new Exception(parent.name + " is the parent of " + child.name);
    } else {
        restrictParentChildLoop(child.parent, parent);
    }
}

关键说明

  • 你的节点类必须提供可访问的名称属性(如public String name或对应的getName()方法),这样才能在异常中输出具体的节点标识。
  • 当递归检测到child的父节点恰好是传入的parent时,说明设置当前父子关系会形成循环,此时直接用两个节点的名称拼接成要求的提示文本即可。
  • 递归逻辑保持不变:向上遍历child的父节点链,直到找到循环节点或遍历到根节点(parent == null)。

内容的提问来源于stack exchange,提问作者Vahid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:36:29