48. Генерация и обработка исключений.
Генерация
Для генерации исключения используется throw
:
throw выражение;
Здесь выражение может иметь любой тип результата! Существует стандартный конструктор Error, которому передаётся строка с описанием ошибки (она сохраняется в свойстве message).
Случай 1. throw используется внутри функции:
Выполнение функции прекращается, управление передаётся на ближайший catch в стеке вызова. Если catch отсутствует, прекращается выполнения всего скрипта (но не других скриптов на странице).
Случай 2. throw используется вне функции («глобально»):
Если есть обрамляющий блок обработки, управление передаётся на его catch. Если обрамляющий блок обработки отсутствует, прекращается выполнения всего скрипта (но не других скриптов на странице).
Обработка
Все фигурные и круглые скобки обязательны. Присутствует или блок catch, или блок finally, или оба.
Переменная e (имя может быть любым) видима только в catch-блоке и имеет значение, которое указывали после throw при генерации исключения.
В блоке catch можно обработать исключение или (и) сгенерировать исключение повторно.
Блок finally выполняется, если блок try завершился:
- как обычно, достигнув конца блока
- из-за инструкции break, continue или return
- с исключением, обработанным в блоке catch
- с неперехваченным исключением, которое продолжает своё распространение на более высокие уровни