Первая инструкция 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. Механизм потоков
Механизм потоков - обязательная черта современных операционных
сред. За счет потоков обеспечивается масштабируемость программ-
ных систем, оптимальное использование аппаратных ресурсов, вы-
Читать дальше