Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

JavaTips - Очистка вашего кода.

JavaTips. Очистка вашего кода.


JavaTips - Очистка вашего кода. Очистка - это важная часть любого кода, который использует драгоценные ресурсы системы, такие как сетевые соединения. Если вы ее не выполняете и оставляете операционной системе, она может занимать большое время, прежде чем освободит ресурсы, а иногда может и не освободить их до тех пор пока система не будет перезапущена. Во всяком случае, чистка в вашем коде - это хорошая практика программирования, потому что вы сами решаете что вам нужно, а что нет.

Это может показаться тривиальной задачей, однако важно, что очистка выполняется во всех случаях. В качестве примера рассмотрите следующий фрагмент кода: try { // Create a connection Connection con = // ... create a connection // ... Use connection object above, such as firing a query // Clean up - release connection con.close(); } catch(SQLException e) { e.printStackTrace(); } Вышеупомянутая программа использует соединение, чтобы выполнить некоторую операцию с базой данных. Она создает соединение, формирует запрос, используя его и, наконец, реализует соединение. Этот, по-видимому, совершенный фрагмент кода имеет обход цикла. Как вы могли предположить, код между созданием и очищением объекта соединения, может генерировать SQLException. Если возникает такое условие, то поток будет направлен к блоку catch и вызов con.close() не будет выполнен. Это означает, что соединение не будет закрыто!

Java обеспечивает удобный способ решения ситуаций такого типа, используя блок finally. Блок finally сопровождает блок try. Помните, что блок try должен сопровождаться блоком catch или finally или обоими. Одна хорошая особенность блока finally - это то, что он выполняется в обоих случаях:

1. Когда блок try завершает выполнение по ходу программы
2. Когда блок try завершает выполнение из-за исключения

Когда блок try завершает выполнение по ходу программы, соответствующий блок finally будет выполнен перед продолжением. Если возникает исключение, то сначала выполняется соответствующий блок catch, а затем блок finally. В случае, если соответствующий блок catch не может быть найден и исключение должно распространиться на стек вызова, то перед этим выполняется блок finally. В любом случае это означает, что блок finally выполнен.

Это свойство блока finally реализовано для выполнения очистки. Здесь приведена модифицированная версия вышеупомянутой программы: Connection con = null; try { // Create a connection con = //... create a connection //... Use connection object above, such as firing a query // Clean up - release connection con.close(); } catch(SQLException ex) { ex.printStackTrace(); } finally{ // Clean up try { if (con != null) { con.close(); } } catch(SQLException sqlEx) { //... Ignore exception } } Как вы можете видеть, есть простые изменения. Но очистка теперь выполняется лучшим способом. Прежде всего, мы переместили объявление для объекта соединения con вне блока try, так, чтобы он был видим в блоке finally. Остаток блока try - такой же, как в предыдущем случае.

В блоке finally мы делаем пару интересных вещей. Во-первых, мы включили чистый код в блоке try. Так как мы ничего не можем сделать больше, если получаем исключение при закрытии соединения, то мы просто игнорируем его. Это удовлетворило бы нас в большинстве случаев, если бы мы не хотели столкнуться с ситуацией (типа регистрации ошибки). Во-вторых, мы проверяем, является ли объект соединения нулем (null). Это важно, потому что исключение могло бы возникнуть во время создания соединения. В это время con был бы нулем. Если мы удалим if check, то это приведет к NullPointerException. И, наконец, мы закрываем объект соединения.

Для очистки некоторые люди используют finalize(), который является специальным методом, вызываемым коллектором "мусора" перед тем как объект удаляется. Однако, коллектор мусора не имеет возможности выполнить что-либо. Так, вы не можете полагаться на finalize(), чтобы выполнить очистку.

Как я упомянул ранее, выполнение очистки - важный аспект разработки кода. И позаботиться нужно о том, чтобы очистка выполнялась во всех возможных случаях. Это делает вашу программу более крепкой и в то же самое время позволяет ей хорошо функционировать.

Nitin
Источник: www.javapower.ru



  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте