Я читал, что блок catch
в try-with-resources не является обязательным.
Я попытался создать объект Connection
в блоке try-with-resources без последующего блока catch
, чтобы получить ошибку компилятора от eclipse:
"Необработанный тип исключения SQLException
, созданный с помощью автоматического вызова close()
.
Поскольку каждый ресурс, который может использоваться в try-with-resources, реализует AutoCloseable
и поэтому потенциально генерирует исключение при вызове метода close()
, я не понимаю, как предложение catch
является необязательным, что это не позволяет мне пропустить исключение из close()
.
Есть ли какое-то особое требование, чтобы конкретная реализация AutoCloseable
не объявляла прямое исключение в методе close()
? (например, переопределить AutoCloseable
close() throws Exception
с помощью close()
, которая не выбрасывает исключение)?
.. или это возможно просто проблема затмения?
Изменить: здесь самый простой фрагмент кода, который все еще вызывает проблему:
try (Connection con = dataSource.getConnection()) {
/*...*/
}
Мысли о том, связано ли это с использованием источника данных JNDI?
Спасибо заранее.