Java как центр архипелага - [6]

Шрифт
Интервал

противное  не оговорено явно посредством спецификаторов private

или protected.

Пакеты разграничивают пространства  имен.  "Просто  глобальных"

имен в языке Java не бывает.

Пакет оформляется с помощью синтаксической конструкции вида

package my_packages.pack1:

Инструкция  package  должна  стоять  первой  в файле с исходным

Java-текстом. Она действует до конца файла.

Пакеты могут импортироваться другими пакетами посредством инст-

рукции import. Примеры,

import java.util;

import java.util.HashTable;

import java.util.*;

Первая инструкция import позволяет обращаться к классам  пакета

util следующим образом:

util.Vector

util.HashTable

. . .

Вторая  инструкция импортирует лишь класс HashTable, позволяя в

дальнейшем обращаться к этому классу по  короткому  имени,  без

префикса util.

Третья  инструкция import позволяет обращаться по коротким име-

нам ко всем классам пакета util.

          4.1.4. Управляющие конструкции

Управляющие конструкции языка Java вполне традиционны, за  иск-

лючением  средств  выхода  из вложенных блоков (в частности, из

вложенных циклов). Пример.

test:

  for (int i = 0; i < 10; i++) {

    for (int j = 0; j < 10; j++) {

      if (i > 3) {

        break test;

      }

    }

  }

Для передачи управления можно применять как конструкцию  break,

так и continue (переход к следующей итерации цикла).

Инструкция goto в языке Java отсутствует.

          4.1.5. Исключительные ситуации

Для обработки исключительных ситуаций, возникающих во время вы-

полнения  программы, в языке Java используется конструкция try/

catch/finally. Блок try содержит инструкции,  выполнение  может

привести  к возникновению исключительных ситуаций. Следующие за

ним один или несколько блоков catch предназначены для обработки

исключительных ситуаций. Наконец, блок finally  содержит  инст-

рукции,  которые  будут  выполнены  независимо от возникновения

исключительной ситуации в блоке try. При  выходе  из  try-части

посредством  инструкций  передачи  управления  (break, return и

т.п.) блок finally также будет выполнен.

Для передачи информации об исключительной ситуации используются

об®екты классов - наследников класса Throwable. Например, класс

ArrayIndexOutOfBoundsException отвечает за контроль выхода  ин-

дексов за границы массивов, класс OutOfMemoryException - за ре-

акцию  на исчерпание свободной памяти, класс ClassCastException

- за     ошибки     при     преобразовании     типов,     класс

InterruptedException  - за обработку прерывания текущего потока

и т.д. Компонентой всех этих классов является поле типа String,

в  которое  помещается  текст  сообщения   об   ошибке.   Метод

getMessage возвращает этот текст.

В подобных об®ектах может содержаться и дополнительная информа-

ция.  Например,  об®екты класса InterruptedIOException содержат

поле, в которое заносится число байт, переданных до возникнове-

ния исключительной ситуации.

Следующий фрагмент программы распечатывает сообщения из массива

messages. При этом мы не пытаемся выяснить размер этого  масси-

ва,  а  просто  полагаемся на механизм обработки исключительных

ситуаций. (Конечно, мы не советуем  писать  программы  в  таком

стиле).

try {

  for (int i = 0; i < 100; i++) {

    System.out.println (messages[i]);

  }

}

catch (ArrayOutOfBoundException e) {

  System.out.println ("No more messages");

}

catch (Exception e) {

  System.out.println ("Unexpected exception");

  System.out.println (e.getMessage());

}

finally {

  System.out.println ("Work done");

}

Искобчительные ситуации могут возбуждаться программно при помо-

щи инструкций вида

throw new MyException ("Something's wrong");

Спецификации языка Java подразделяют исключительные ситуации на

две категории. К первой категории (класс Error) относятся ситу-

ации, на которые программа не обязана реагировать (это заведомо

сделает Java-машина). Ко второй категории (класс Exception) от-

носятся  ситуации, которые программа должна обрабатывать обяза-

тельно. Если при выполнении метода может возникать исключитель-

ная ситуация второго типа, он должен либо обрабатывать ее сам с

помощью конструкции try/catch/finally, либо в  его  определении

должна фигурировать конструкция

throws Exception1, Exception2, ...

Пример.

class Foo extends Object {

  . . .

  public void readFromFile (String fn) throws InvalidFormatException {

    FileInputStream fis;

    try {

      fis = new FileInputStream (fn);

      // Читаем данные из файла.

      . . .

      // Если файл имеет неправильный формат,

      // вожбуждаем исключительную ситуацию:

      throw new InvalidFormatException ("Wrong format");

      . . .

    }

    catch (FileNotFoundException e) {

      // Предпринимаем соответствующие действия

    }

    finaly {

      if (fis != null )

        fis.close(); // всегда закрываем файл, если он был открыт

    }

  }

  . . .

}

В этом примере в методе readFromFile могут возникнуть две искл-

чительные  ситуации.  Первая связана с тем, что нужный файл не-

доступен.   Эта   ситуация   обработывается    внутри    метода

readFromFile.  Вторая  исключительная ситуация может вознкнуть,

если файл имеет неправильный формат.  Эта  ситуация  передается

для обработки наверх.

          4.1.6. Механизм потоков


Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


Фундаментальные алгоритмы и структуры данных в Delphi

Книга "Фундаментальные алгоритмы и структуры данных в Delphi" представляет собой уникальное учебное и справочное пособие по наиболее распространенным алгоритмам манипулирования данными, которые зарекомендовали себя как надежные и проверенные многими поколениями программистов. По данным журнала "Delphi Informant" за 2002 год, эта книга была признана сообществом разработчиков прикладных приложений на Delphi как «самая лучшая книга по практическому применению всех версий Delphi».В книге подробно рассматриваются базовые понятия алгоритмов и основополагающие структуры данных, алгоритмы сортировки, поиска, хеширования, синтаксического разбора, сжатия данных, а также многие другие темы, тесно связанные с прикладным программированием.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.


Как пасти котов. Наставление для программистов, руководящих другими программистами

«Как пасти котов» – это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.