为什么一个方法可以被声明为抛出许多异常,即使它们都没有被抛出?

时间:2015-03-17 22:44:49

标签: java exception method-declaration

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

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

为什么?

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

1 个答案:

答案 0 :(得分:13)

  1. 重写该方法的子类可能会抛出异常,即使它的超类不是。
  2. 您可以稍后更改方法以抛出其中一个列出的异常,同时保持向后兼容性。