Spec-Zone .ru
спецификации, руководства, описания, API
|
Термин исключение является сокращением для фразы "исключительное событие."
Исключение является событием, которое происходит во время выполнения программы, которая разрушает нормальный поток инструкций программы.
Когда ошибка происходит в пределах метода, метод создает объект и передает его к системе времени выполнения. Объект, названный объектом исключения, содержит информацию об ошибке, включая ее тип и состояние программы, когда ошибка произошла. Создание объекта исключения и вручение его к системе времени выполнения вызывают, выдавая исключение.
После того, как метод выдает исключение, система времени выполнения пытается найти, что что-то обрабатывает его. Набор возможного "somethings", чтобы обработать исключение является упорядоченным списком методов, которые вызвали, чтобы добраться до метода, где ошибка произошла. Список методов известен как стек вызовов (см. следующее число).
Стек вызовов.
Система времени выполнения ищет стек вызовов метод, который содержит блок кода, который может обработать исключение. Этот блок кода вызывают обработчиком исключений. Поиск начинается с метода, в котором ошибка произошла и продолжается через стек вызовов в обратном порядке, в котором вызвали методы. Когда соответствующий обработчик находится, система времени выполнения передает исключение к обработчику. Обработчик исключений считают соответствующим, если тип исключения возражает брошенным соответствиям тип, который может быть обработан обработчиком.
Выбранный обработчик исключений, как говорят, ловит исключение. Если система времени выполнения исчерпывающе ищет все методы на стеке вызовов, не находя соответствующий обработчик исключений, как показано в следующем числе, система времени выполнения (и, следовательно, программа) завершается.
Поиск стека вызовов для обработчика исключений.
Используя исключения, чтобы управлять ошибками имеет некоторые преимущества перед традиционными методами управления обработкой ошибок. Можно учиться больше в Преимуществах раздела Исключений.