Механизм обработки исключений в современных языках программирования работает следующим образом: neerc.ifmo.ru
- Каждый раз, когда при выполнении программы происходит ошибка, создаётся объект-исключение, содержащий информацию об ошибке, включая её тип и состояние программы на момент возникновения ошибки. neerc.ifmo.ru
- После создания исключения среда выполнения пытается найти в стеке вызовов метод, который содержит код, обрабатывающий это исключение. neerc.ifmo.ru Поиск начинается с метода, в котором произошла ошибка, и проходит через стек в обратном порядке вызова методов. neerc.ifmo.ru
- Если обработчик всё же найден, то он ловит исключение и программа продолжает работать как обычно. tproger.ru В некоторых языках вместо catch используется глагол except (исключить). tproger.ru
Существует два механизма функционирования обработчиков исключений: ru.wikipedia.org
- Обработка с возвратом. ru.wikipedia.org Обработчик исключения ликвидирует возникшую проблему и приводит программу в состояние, когда она может работать дальше по основному алгоритму. ru.wikipedia.org В этом случае после того, как выполнится код обработчика, управление передаётся обратно в ту точку программы, где возникла исключительная ситуация, и выполнение программы продолжается. ru.wikipedia.org
- Обработка без возврата. ru.wikipedia.org После выполнения кода обработчика исключения управление передаётся в некоторое, заранее заданное место программы, и с него продолжается исполнение. ru.wikipedia.org То есть фактически, при возникновении исключения команда, во время работы которой оно возникло, заменяется на безусловный переход к заданному оператору. ru.wikipedia.org
Если не было найдено ни одного подходящего обработчика, выполнение программы завершается. neerc.ifmo.ru