如何为父子循环检测函数生成正确的异常提示信息
问题:生成父子循环检测的正确异常提示信息
我想要实现一个可识别父子循环的函数,该函数至少接收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
相关产品推荐
相关产品推荐

