我使用以下方法关闭与java DB的连接:
public void shutdownDisconnect() {
if(connectionExists) {
String databaseURL = getDBurl();
dbProperties.put("shutdown", "true");
try {
DriverManager.getConnection(databaseURL, dbProperties);
System.out.println("success");
} catch (SQLException ex) {
//shutdown always results in an SQLException
System.out.println(ex);
//This exeption is:java.sql.SQLNonTransientConnectionException: DERBY SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: Database 'databasename' shutdown.
}
connectionExists = false;
}
}
我的第一个System.out.println
没有打印任何意味着尝试没有执行的任何内容,并且我超出了指示的异常。
据我所知“成功关闭总会导致SQLException”,但这是否意味着不执行try语句?谢谢你的帮助。
答案 0 :(得分:3)
您的try
阻止 ,否则不会抛出异常。
不幸的是,这是关闭Derby的方式。
答案 1 :(得分:1)
错误发生在
DriverManager.getConnection(databaseURL, dbProperties);
这就是原因:
System.out.println("success");
未执行。
System.out.println(ex);
正在打印
java.sql.SQLNonTransientConnectionException: DERBY SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: Database 'databasename' shutdown.
所以你看到:处理catch
- 块。
如果将System.out.println("success");
添加为catch块中的第一个语句,则会打印它。