Связывание исключений с обработчиками
}
}
Теперь можно сгенерировать исключение: 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 |