Синтаксис оператора _try Назад В начало Вперед
<оператор-try> = _try <оператор>
  [ <блок-обработки-исключения> ]
  [ <блок-очистки> ]
  ;

<оператор> - оператор программы или программный блок.

<оператор> = <обычный-оператор> | <составной-оператор>

<блок-обработки-исключения> - перечень исключительных ситуаций с операторами их ибработки.

<блок-обработки-исключения> = _except
  on <список-исключений> : <оператор>
  {on <список-исключений> : <оператор>}
  [ else <оператор> ]

<список-исключений> - перечень исключительных ситуаций, при возникновении которых выполняется указанный оператор.

<список-исключений> = <тип-или-группа-исключения>
  {, <тип-или-группа-исключения>}

<тип-или-группа-исключения> - идентификатор, описывающий исключительную ситуацию.

<тип-или-группа-исключения> = <стандартная-группа>
  | <стандартный-тип>
  | <определенная-пользователем-группа>
  | <определенный-пользователем-тип>

<стандартная-группа> - одна из предопределенных групп исключений (см. раздел "Стандартные исключения. ").

<стандартный-тип> - один из предопределенных типов исключений (см. раздел "Стандартные исключения. ").

<определенная-пользователем-группа> - группа исключений, заданная пользователем.

<определенная-пользователем-группа> =
  exception Ex<идентификатор-группы>
  [, Ex<идентификатор-группы>]
  [noMessage]

<определенный-пользователем-тип> - тип исключения, заданный пользователем.

<определенный-пользователем-тип> = exception
	 Ex<идентификатор-типа>[(<идентификатор-группы>)]
  [, Ex<идентификатор-типа>[(<идентификатор-группы>)]
  [noMessage]

<оператор> - оператор программы или программный блок.

Ключевое слово else задает оператор, который будет выполнен при возникновении исключительной ситуации не указанной ни в одном on-блоке.

<блок-очистки> - блок гарантированной очистки (finally-блок). Выполняется после нормального выполнения try-блока, а также при возникновении необработанных исключений.

Если появилось исключение и было обработано в except-блоке, finally-блок по умолчанию выполняется, и чтобы его обойти применяется оператор _skipFinally. Имеется возможность, вызвав оператор _doFinally непосредственно выполнить finally-блок и выйти из try-блока.

<блок-очистки> = _finally <оператор>

Сгенерировать исключение указанного типа:

<оператор-raise> = _raise <тип-или-группа-исключения>;

Перейти в блок очистки. Текущая обработка оператора _try (try-блок или except-блок) прекращается:

<оператор-doFinally> = _doFinally;

Восстановить текущее исключение. После выполнения оператора _reRaise исключение считается необработанным несмотря на наличие on-блока для данного исключенния:

<оператор-reRaise> = _reRaise;

Продолжить выполнение с точки возникновения исключения:

<оператор-retry> = _retry;

Запретить прерывания во время выполнения оператора:

<оператор-noExcept> = _noExcept <оператор>;

Не выполнять блок очистки:

<оператор-skipFinally> = _skipFinally;