Java JDBC: Работа с базой данных
Теория: Конструкция try-with-resources
Посмотрите на код ниже и попробуйте разобраться, что с ним не так:
Этот код написан из предположения, что вызов statement.executeUpdate(sql) никогда не приведет к ошибке. А что произойдет, если ошибка случится? Тогда возникнет исключение, и метод statement.close() никогда не будет вызван для текущего стейтмента.
Такая ситуация не должна происходить, поэтому нужно делать закрытие в блоке finally:
Теперь стейтмент правильно закроется, даже если возникнет ошибка. В теории это выглядит нормально, но на практике за этим сложно уследить. Программисты регулярно забывают добавлять блок finally.
Это настолько большая проблема, что создатели Java добавили конструкцию try-with-resources. Она позволяет автоматически закрывать объекты, которые реализуют интерфейс java.lang.AutoCloseable — это делают все объекты, подразумевающие закрытие.
Рассмотрим тот же пример, но с автоматическим закрытием:
Эта конструкция использует точно такое же ключевое слово, как и обработка исключений, но работает немного по-другому. Она отличается синтаксически: в этом случае после try идут скобки, в которых выполняется выражение, открывающее соединение. Теперь посмотрим на пример из предыдущего урока, переписанный под автоматическое закрытие:
Рекомендуемые программы
Завершено
0 / 5

