使用checked exception会强制要求方法的调用方处理错误,可以继续传播也可以处理它们。 这就让这些异常成为了这个方法API的一部分。

为了保证调用方的可读性和复杂性,方法不应该抛出多余一个的checked exception。

如下代码:

public void delete() throws IOException, SQLException {      // Non-Compliant
  /* ... */
}

应该重构为:

public void delete() throws SomeApplicationLevelException {  // Compliant
  /* ... */
}
这个规则不会检测覆盖方法,允许抛出多个checked exception。