<<
>>

Связывание исключений с обработчиками

Генерация исключения происходит довольно просто. Экземпляр класса исключения является операндом оператора throw. Определим класс исключения с именем TheException следующим образом: class TheException extends Exception { public TheException() {} public TheException(String message) { super (message);

}

}

Теперь можно сгенерировать исключение: throw new TheException();

Создать экземпляр исключения можно и отдельно от оператора throw, как показано ниже:

TheException theExceptionObject = new TheException(); throw theExceptionObject;

Один из двух конструкторов, включенных в наш новый класс, не имеет параметров, а другой имеет параметр в виде объекта типа String, который он передает в суперкласс (Exception) для отображения.

Следовательно, наше новое исключение может быть сгенерировано следующим образом: throw new theException("сообщение^ указывающее место ошибки");

Связывание исключений с обработчиками в языке Java подобно языку С++. Если исключение появилось внутри конструкции t ry, оно перемещается за закрывающую скобку конструкции и связывается с первым обработчиком (catch-функцией), класс формального параметра у которого такой же, что у объекта-исключения.

Разрешается, чтобы класс параметра обработчика был предком класса исключения. Далее связанный обработчик выполняет обработку исключения.

Исключения могут быть обработаны, а затем снова сгенерированы. Для этого достаточно включить оператор throw без операнда в конец обработчика. Повторно выработанное исключение уже не будет обрабатываться на уровне первоначальной конструкции try, так что зацикливание не возникает. Повторная генерация предусматривается, когда следует выполнить некоторое локальное действие, а затем дальнейшую обработку перенести на уровень объемлющей конструкции try или вызывающего модуля.

Оператор throw в обработчике может также создать исключение другого класса. Следовательно, одно исключение способно породить другое исключение.

Для проверки того, что исключения, созданные в конструкции try, всегда обрабатываются некоторым методом, можно ввести специальный обработчик, подходящий для исключений всех классов, производных от класса Exception. Достаточно определить обработчик с параметром типа Exception: catch (Exception anyObject) {

}

Поскольку имя класса всегда соответствует самому себе или любому классу- предку, любой класс, являющийся потомком класса Exception, соответствует

Обработка исключений в языке Java

535

классу Exception. Конечно, такой обработчик должен всегда помещаться в конец списка, замыкающего конструкцию try, так как он блокирует использование любого последующего обработчика. Следовательно, поиск подходящих обработчиков выполняется последовательно и заканчивается, когда соответствие найдено.

<< | >>

Еще по теме Связывание исключений с обработчиками:

  1. Позитивное связывание
  2. Ограничение свободы движений (связывание, стягивание)
  3. Ограничение свободы движений (связывание, стягивание)
  4. Исключения
  5. какиe виды тайны влекут исключения из числа свидетелей.
  6. Статья 128. Исключение из состава участников полного общества
  7. ИСКЛЮЧЕНИЯ ПРИ АНАЛИЗЕ ГОЛОСОВОГО КОДА
  8. ИСКЛЮЧЕНИЯ ПРИ АНАЛИЗЕ ГОЛОСОВОГО КОДА
  9. Статья 130. Расчеты в случае выхода, исключение и убытие с полного общества
  10. § 2. Требования об освобождении имущества от ареста и исключении имущества из описи (п. 2509-2515)
  11. коян: Восходящий узел - включение в общий поток; Нисходящий узел - исключение из общего потока.