我有这个做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()
}
这当然不能编译,但我没有看到差异。