8

我正在将我的源代码与一位同事的源代码合并,我看到他在方法声明中添加了要抛出的异常;但是,我知道,该方法永远不会真正抛出异常。

我想知道为什么编译器没有警告我“声明的未抛出异常”(或类似的东西)。我意识到你可以声明一个抛出 N 个异常的方法,即使方法中的代码没有抛出这些异常。

这是为什么?

public void foo() throws IOException, IntrospectionException,  BadStringOperationException, ... {
    //do nothing
}
4

1 回答 1

13
  1. 覆盖该方法的子类可能会抛出异常,即使它的超类没有。
  2. 您可以稍后更改方法以引发列出的异常之一,同时保持向后兼容性。
于 2015-03-17T22:47:36.627 回答