首页 文章

方法重载并抛出异常处理

提问于
浏览
0

假设我有以下代码:

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

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

如果app逻辑抛出一个异常(比如IllegalArgumentException / Parse Exception),并且我想在调用方法中捕获这个,那么应该在所有方法标识符中添加“throws IllegalArgumentException”还是仅在基本方法标识符中添加?这有什么优势吗?

1 回答

  • 4

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

    • 这是一个刻意的,理想的行动 .

    • 您已经知道如何期望调用者处理已检查的异常 . 理想情况下,您已记录了您希望他们对异常执行的操作 .

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

    • 声明"throws"一个从未实际抛出的异常 . 这只会引起混淆,并让开发人员养成忽略异常的习惯,因为它们没有任何 Value .

    • 抛出一个已检查的异常,因为它不太可能是从中恢复的合理方法 . 在这种情况下,未经检查的异常可能会更好 .

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

    此外,您应该尝试向每个异常/错误添加有意义的消息,以便开发人员更容易地解决如何修复代码或配置 .

    我想在调用方法中捕获这个,如果在所有方法标识符中添加“抛出IllegalArgumentException”或仅在基本方法标识符上添加?

    只将它添加到可以实际抛出异常的方法中 .

相关问题