假设我有以下代码:
public void methodOne(String argumentOne) {
methodOne(argumentOne, false);
}
public void methodOne(String argumentOne, boolean equality) {
//App logic here
}
如果应用程序逻辑抛出异常(例如 IllegalArgumentException/Parse Exception),并且我想在调用者方法中捕获此异常,则应该在所有方法标识符中添加“抛出 IllegalArgumentException”还是仅在基本方法中添加“抛出 IllegalArgumentException”标识符?相比之下有什么优势吗?
最佳答案
抛出已检查的异常意味着您希望调用者被迫考虑如何处理该异常。您应该只在以下情况下执行此操作:
- 这是您深思熟虑的、理想的行为。
- 您知道调用者如何处理已检查的异常。理想情况下,您已经记录了您希望他们对异常执行的操作。
因此这是一个非常糟糕的主意
- 声明“抛出”一个从未实际抛出的异常。这只会造成困惑,并使开发人员养成忽略异常的习惯,因为它们没有值(value)。
- 当不太可能是从异常中恢复的合理方法时抛出已检查异常。在这种情况下,未经检查的异常可能会更好。
我更喜欢为未经检查的异常添加 throws 子句,作为记录可能出错的内容及其含义的一种形式,而不强制调用者处理这些异常。
此外,您应该尝试向每个异常/错误添加有意义的消息,以便开发人员更轻松地找出如何修复代码或配置。
i would like to catch this in the caller method, should the "throws IllegalArgumentException" be added in all the method identifier or only on the base method identifier?
仅将其添加到实际可以抛出异常的方法中。
关于java - 方法重载和抛出异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53701387/