JAVA DB: Shutdown Derby не работает

Я использую следующий метод, чтобы закрыть свое соединение с 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 не выполняется? Спасибо за вашу помощь.


person Jamol    schedule 27.03.2012    source источник


Ответы (2)


Ваш try блок выполняется, иначе исключение не будет создано.

К сожалению, именно так работает завершение работы с Дерби.

person a_horse_with_no_name    schedule 27.03.2012

Ошибка выдается на

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, он будет напечатан.

person oers    schedule 27.03.2012