Приведенный выше код может оставить объект Connection
открытым, что может вызвать серьезные проблемы.
Вы можете гарантировать, что Connection
закроется, когда закончите с ним в несколько способов:
public Connection createConnection() {
return connectionFactory.createConnection(...); // note that this method does not open the connection
}
Затем, когда вы хотите использовать соединение, либо используйте try-catch-finally :
try {
Connection c = createConnection();
doSomethingWithPossibleException(c);
} catch(PossibleException e) {
handleException(e);
} finally {
// now close the connection
c.close();
}
, либо вы можете использовать try-with-resources (от Java 7 и далее):
try (Connection c = getConnection()) {
doSomethingWithPossibleException(c);
} catch (PossibleException e) {
handle(e);
}
IMO try-with-resources немного более читабелен, хотя вкусы в этом вопросе разные. Обратите внимание, что объект, который вы создаете в try-with-resources , должен реализовывать интерфейс AutoCloseable
.