方法重载和抛出异常处理
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?
只在真正能抛出异常的方法中添加。
假设我有以下代码:
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?
只在真正能抛出异常的方法中添加。