gpt4 book ai didi

java - 我应该在方法签名中声明从方法抛出的所有异常,还是只声明异常的父类(super class)?

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

当我从方法中抛出已检查的异常时,我应该只在方法签名中声明异常的父类(super class)还是所有不同的类型?如果我有以下异常:

private class SuperException extends Exception {

}

private class SubExceptionOne extends SuperException {

}

private class SubExceptionTwo extends SuperException {

}

方法签名应该是:

 void confirmAccount() throws SubExceptionOne, SubExceptionTwo;

 void confirmAccount() throws SuperException;

在最后一个方法签名中,我如何告诉其他开发人员可以从该方法中抛出哪些异常?如果不同的子类型需要不同的处理?

最佳答案

接口(interface)应该尽可能稳定。所以可能是 super 。许多库使用“ super ”策略,因为异常规范在可维护性方面造成的烦恼远远超过它们增加的可读性或安全性。甚至 IOException 也是几乎所有 Java 库代码都使用的 Super,而不是声明更具体的异常。 (但是当他们确实声明了更具体的异常时,这是因为约定是不会抛出更一般的 IOException。继续阅读。)

如果您真的想说可以抛出这些异常中的每一个,但又不想说可以抛出 Super 的任何派生类,则可以列出 Sub1 和 Sub2。也许 Sub1 是 NumberCrunchException 并且您的方法调用 crunchNumbers() 并且您的方法的用户可以放心,这是您的方法所做的唯一异常的事情。在这种情况下,具体策略更好。

关于java - 我应该在方法签名中声明从方法抛出的所有异常,还是只声明异常的父类(super class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26829844/

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