EXC.BROADTHROWS
一个方法应引发相应抽象层次的异常。如果一个方法引发的异常太过通用,如 Exception 和 Throwable,调用方将难以正确处理错误并进行适当的错误恢复。
漏洞与风险
如果方法引发的异常太过通用,调用方必须调查所发生问题的类型,以便正确处理该问题。此外,如果方法代码更改且引发新类型的异常,则使所有调用方正确处理该问题将变得更加困难。
缓解与预防
一个方法应引发相应抽象层次的异常。必要时,低级异常可使用高级异常来覆盖。
示例 1
复制
public void processFile(String fileName) throws Exception {
InputStream is = new FileInputStream(fileName);
// do something
}
public int calculateSum(Collection data) throws Throwable {
int sum = 0;
for (Iterator it = data.iterator(); it.hasNext();) {
String element = (String) it.next();
int i = Integer.parseInt(element);
sum += i;
}
return sum;
}
针对第 15 行的方法 processFile 声明报告 EXC.BROADTHROWS:“processFile”方法引发了通用异常“java.lang.Exception”。
针对第 19 行的方法 calculateSum 声明报告 EXC.BROADTHROWS:“calculateSum”方法引发了通用异常“java.lang.Throwable”。