Попытка
Обработка исключительных ситуаций.
Синтаксис:
Попытка // Некоторые действия; Исключение // Обработка исключительной ситуации; КонецПопытки;
Англоязычный Синтаксис:
Try // Некоторые действия; Except // Обработка исключительной ситуации; EndTry;
Параметры:
// Некоторые действия | Исполняемый оператор или последовательность таких операторов. |
// Обработка исключительной ситуации | Исполняемый оператор или последовательность операторов, которые обрабатывают исключительную ситуацию. |
Исключение | Операторы, следующие за ключевым словом Исключение выполняются, если при выполнении последовательности операторов <// Некоторые действия> произошла ошибка времени выполнения. |
КонецПопытки | Ключевое слово, которое завершает структуру оператора обработки исключительных ситуаций. |
Описание:
Оператор Попытка управляет выполнением программы, основываясь на возникающие при выполнении модуля ошибочные (исключительные) ситуации и определяет обработку этих ситуаций.
В качестве ошибочных (исключительных) ситуаций воспринимаются ошибки времени выполнения модуля. Не предусмотрено определяемых пользователем исключений.
Если при выполнении последовательности операторов <// Некоторые действия> произошла ошибка времени выполнения, то выполнение оператора, вызвавшего ошибку прерывается и управление передается на первый оператор последовательности операторов <// Обработка исключительной ситуации>. При этом управление будет передано даже в том случае, если ошибку вызвал оператор, находящийся в процедуре или функции, вызванной из <// Некоторые действия>. Если ошибка произошла в вызванной процедуре или функции, то ее выполнение будет прервано, а локальные переменные уничтожены. Это справедливо для любой вложенности вызовов. После выполнения последовательности операторов <// Обработка исключительной ситуации> управление передается на следующий за ключевым словом КонецПопытки оператор. Если же последовательность <// Некоторые действия> выполнилась без ошибок, то последовательность операторов <// Обработка исключительной ситуации> будет пропущена и управление также будет продолжено с оператора, следующего за ключевым словом КонецПопытки.
Конструкции Попытка-Исключение-КонецПопытки могут быть вложенными. При этом, при возникновении исключительной ситуации управление будет передано на самый "внутренний" обработчик, начинающийся с ключевого слова Исключение. Последовательность операторов <// Обработка исключительной ситуации> может содержать оператор ВызватьИсключение (англоязычный синоним Raise). Выполнение данного оператора прекращает выполнение последовательности <// Обработка исключительной ситуации> и производится поиск более "внешнего" обработчика. Если таковой есть, то управление передается на его первый оператор. Если нет, то выполнение модуля прекращается с выдачей сообщения о первоначально возникшей ошибке. Оператор ВызватьИсключение может встречаться только внутри операторных скобок Исключение … КонецПопытки.
В выдаче диагностики помощь может оказать встроенная функция ОписаниеОшибки() (англоязычный синоним GetErrorDescription). Эта функция не имеет параметров, а в качестве значения возвращает описание ошибки, такое же, как было бы выдано в окне сообщений, в случае отсутствия обработчика исключительной ситуации, за исключением описания модуля и строки, в которой ошибка возникла. Применять данную функцию имеет смысл только при выполнении последовательности операторов <// Обработка исключительной ситуации>, так как в ином случае она вернет пустую строку.
Пример:
Процедура СформироватьВЕхсеl() Попытка // пытаемся обратиться к программе MS Excel Табл = СоздатьОбъект("Excel.Application"); Исключение Предупреждение(ОписаниеОшибки() + "; Excel не установлен на данном компьютере!"); Возврат; КонецПопытки; // Формирование отчета ... КонецПроцедуры