当我把它抛到finally中时,为什么我不必声明一个方法来抛出异常

时间:2016-07-25 23:18:40

标签: java

我有这个做JDBC的代码:

public void doMe() throws SQLException {
  try {
     ... JDBC stuff
  } finally {
     try {
        closeConnectionsAndStuff();
     } catch (Exception e) {
        logger.error(e);
        throw e;
     }
  }
}

为什么这会编译?我清楚地捕获了Exception(它可能是一个SQLException,但却被一个异常捕获)并且我清楚地抛出它。

为什么它会在没有抛出异常的情况下编译Exception作为方法声明的一部分?

与此不同的是:

public void doMe() {
  throw new Exception()
}

这当然不能编译,但我没有看到差异。

0 个答案:

没有答案