方法重载和抛出异常处理

Method overloading and throws exception handling

假设我有以下代码:

public void methodOne(String argumentOne) {
    methodOne(argumentOne, false);
}

public void methodOne(String argumentOne, boolean equality) {
    //App logic here
}

如果应用程序逻辑抛出异常(比如 IllegalArgumentException/Parse 异常),我想在调用方方法中捕获它,是否应该在所有方法标识符中添加 "throws IllegalArgumentException" 或仅在基本方法标识符上?这有什么优势吗?

抛出检查异常意味着您希望调用者被迫考虑如何处理该异常。你应该只在以下情况下这样做:

  • 这是您心目中经过深思熟虑的理想行为。
  • 您对期望调用者如何处理已检查的异常有所了解。理想情况下,您已经记录了您希望他们对异常执行的操作。

因此,

是一个非常糟糕的主意
  • 声明 "throws" 一个从未实际抛出的异常。这只会造成混乱,并让开发人员养成忽略异常的习惯,因为它们没有价值。
  • 当不太可能是从异常中恢复的合理方法时,抛出已检查异常。在这种情况下,未经检查的异常可能会更好。

我更喜欢为未经检查的异常添加 throws 子句,作为记录可能出错的地方及其含义的一种形式,而无需强制调用者处理这些异常。

此外,您应该尝试向每个 Exception/Error 添加有意义的消息,以使开发人员更容易找出如何修复代码或配置。

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?

只在真正能抛出异常的方法中添加。