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. Механизм потоков


Рекомендуем почитать
Программное обеспечение и его разработка

Автор книги — американский специалист по программированию, один из руководителей фирмы IBM, в своей книге делает попытку изложить общие проблемы создания программного обеспечения, его сопровождения и использования. Особенно подробно рассматриваются все фазы разработки программ разных типов. Изложение ясное, удачно иллюстрировано примерами.Для программистов разной квалификации и пользователей ЭВМ.fb2: ВНИМАНИЕ. В тексте присутствуют таблицы. Рекомендуется читать файл с помощью программы, поддерживающей их отображение.


Энциклопедия разработчика модулей ядра Linux

Linux Kernel Module Programming Guide свободная книга; Вы можете воспроизводить и/или изменять ее в соответствии с версией 2 (или, в вашем случае, любой более поздней версией) GNU General Public License, опубликованной Free Software Foundation. Версия 2 поставляется с этим документом в Приложении E.Эта книга распространяется в надежде, что будет полезна, но без какой-либо гарантии; даже без подразумеваемой гарантии высокого спроса или пригодности какой-либо для специфической цели.Автор поощряет широкое распространение этой книги для персонального или коммерческого использования, если вышеупомянутое примечание относительно авторского права остается неповрежденным, и распространитель твердо придерживается условий GNU General Public License (см.


Применение Windows API

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Управление исходными текстами. Часть 1. Краткое руководство по CVS

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Вариации на тему STL. Адаптер обобщенного указателя на функцию-член класса

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.