У меня есть примерки всеобъемлющая наконец блок, который выглядит так:Что заставляет блок finally выполнить слишком скоро?
ResultSet rs;
PreparedStatement ps;
Connection conn;
try {
for (int i = 0; i < list.size(); i++) {
** execute SQL query **
}
} catch (Exception e) {
throw e;
} finally {
** close result set **
** close prepared statement **
** close connection **
}
Я проверил, что мой список ArrayList имел 534 элементов в нем. Проблема в том, что блок finally для закрытия всего выполняется после первого вхождения цикла for for, что приводит к тому, что следующее возникновение вызывает исключение, потому что соединение теперь закрыто.
Я никогда не сталкивался с ситуацией, когда блок finally выполняется до завершения блока try. Что может вызвать этот сценарий?
могли бы включить больше вашего исходного кода? Обфускание самого запроса, если хотите. Но больший контекст поможет. – jtravaglini
Может ли быть, что ваша первая итерация выдает исключение? Это объяснит это. – Konstantin
Возможно, вы повторно используете объект, не подлежащий повторному использованию. – SLaks