1

我正在使用以下方法关闭与 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 语句?谢谢你的帮助。

4

2 回答 2

3

执行您的try否则不会引发异常。

不幸的是,这就是德比停摆的方式。

于 2012-03-27T06:47:16.843 回答
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-block 被处理了。

如果您System.out.println("success");在 catch 块中添加为第一条语句,它将被打印。

于 2012-03-27T06:49:30.337 回答