方法重载并引发异常处理

时间:2018-12-10 07:45:30

标签: java methods overloading throws

假设我有以下代码:

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

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

如果应用逻辑引发异常(例如IllegalArgumentException / Parse Exception),并且我想在调用方方法中捕获此异常,则应在所有方法标识符中或仅在基本方法中添加“ throws IllegalArgumentException”标识符?有什么好处吗?

1 个答案:

答案 0 :(得分:4)

引发已检查的异常意味着您希望调用者被迫考虑如何处理该异常。您仅应在以下情况下这样做:

  • 这是您内心深思熟虑的理想操作。
  • 您已经知道如何期望调用方处理已检查的异常。理想情况下,您已经记录了您期望他们对异常的处理。

因此,这是一个非常糟糕的主意

  • 声明“引发”从未真正引发过的异常。这只会引起混乱,并使开发人员养成忽略异常的习惯,因为它们毫无价值。
  • 当不太可能从中恢复异常时,抛出一个检查异常。在这种情况下,未经检查的异常可能会更好。

我更喜欢为未经检查的异常添加throws子句,以此形式记录可能出错的内容及其含义,而不必强迫调用者处理这些异常。

此外,您应该尝试向每个“异常/错误”添加有意义的消息,以使开发人员更容易确定如何修复代码或配置。

  

我想在调用方方法中捕捉到这一点,应该在所有方法标识符中还是仅在基本方法标识符中添加“ throws IllegalArgumentException”?

仅将其添加到可以实际引发异常的方法中。