Spec-Zone.ru › Ada 2005
Справочник по Ada 2005

11.2 Обработчики исключений

Обработка одного или нескольких исключений задается обработчиком_исключений.

Синтаксис

обрабатываемая_последовательность_операторов ::=
последовательность_операторов
[исключение
обработчик_исключений
{обработчик_исключений}]
обработчик_исключений ::=
когда [указание_параметра_выбора:] выбор_исключения {| выбор_исключения} =>
последовательность_операторов
указание_параметра_выбора ::= идентификатор_определения
выбор_исключения ::= имя_исключения_имя | другие

Правила легальности

Выбор с именем_исключения_ охватывает указанное исключение. Выбор с другие охватывает все исключения, не указанные предыдущими выборами в том же обрабатываемой_последовательности_операторов. Два выбора в различных обработчиках_исключений одного обрабатываемой_последовательности_операторов не должны охватывать одно и то же исключение.
Выбор с другие допускается только для последнего обработчика обрабатываемой_последовательности_операторов и в качестве единственного выбора этого обработчика.
имя_исключения_имя выбора не должно обозначать исключение, объявленное в формальном пакете-генерике.

Статическая семантика

указание_параметра_выбора объявляет параметр выбора, который является постоянным объектом типа Exception_Occurrence (см. 11.4.1). Во время обработки возникновения исключения параметр выбора обработчика, если он есть, представляет собой возникновение исключения, которое обрабатывается.

Динамическая семантика

Выполнение обрабатываемой_последовательности_операторов состоит из выполнения последовательности_операторов. Необязательные обработчики используются для обработки любых исключений, которые распространяются последовательностью_операторов.

Примеры

Пример обработчика исключений:
begin
Open(File, In_File, "input.txt"); -- см. A.8.2
исключение
когда E : Name_Error =>
Put("Невозможно открыть входной файл : ");
Put_Line(Exception_Message(E)); -- см. 11.4.1
вызвать;
end;


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API