gpt4 book ai didi

java - Java 中的异常处理和接口(interface)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:12 24 4
gpt4 key购买 nike

我已经为它编写了一个接口(interface)和一个实现,但我无法确定处理以下问题的最佳方法。简而言之,假设这是界面:

public interface Node {
String getNodeName();
Node getChildByName(String name);
void addChild(Node node);
void removeChild(Node node);
}

现在如果我想处理异常,是让异常尽可能通用还是我应该添加更具体的异常是个好主意?

假设方法 addChild,它是否应该抛出一个通用的 NodeException,它可能会在任何其他方法中使用,以便实现类可以按需扩展它,或者是否可以使用只有这个方法应该抛出的 NodeAdditionException?通用异常的优点是,如果我在内部使用其中一种方法并且抛出异常,我不需要包装异常,我可以让它进入堆栈直到有人捕获它。它通常会交给我的实现的调用者,然后他需要处理它。调用者可以捕获通用异常以仅用一个例程处理所有异常或捕获任何子类。这同时也是一个巨大的缺点,因为调用者可能会捕获许多不同的子异常,而这些子异常甚至不需要在当前实现中使用。这有点破坏交易。解决这个问题的一种方法是为要使用的实现创建一组固定的异常,这也不是我想要做的。

另一种方式是特定的异常(exception),但这也是有代价的。您将拥有一组可以抛出的固定异常,仅此而已,这是一个优势,但是如果您在内部使用任何方法,则需要捕获异常,将其包装在一个新异常中并再次抛出。如果我做对了,这会占用大量资源,而且要编写很多样板代码。最后我会把它作为处理异常的更简洁的方法。

除了这个我现在还想不起来,还有其他方法可以处理异常吗?我是否忽略了这两个方面的一个重要细节,或者我是否需要在这两个弊端中选择较小的一个?任何帮助表示赞赏。

最佳答案

在你的异常中有一个继承结构;例如,NodeAddException extends NodeException。这样一来,异常的捕获器就可以根据需要具体化或通用化。

关于java - Java 中的异常处理和接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20107848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com