0

Оператор Попытка

Оператор программной обработки исключительных ситуаций

Синтаксис

Оператор Попытка имеет следующий синтаксис:

Попытка
    //потенциально ошибочные операторы
Исключение
    //операторы обработки исключительной ситуации
    [ВызватьИсключение;]
КонецПопытки;

А также альтернативный англоязычный синтаксис:

Try
    //unstable compute
Except
    //catch operators
    [Raise;]
EndTry;

Описание

Оператор Попытка контролирует выполнение операторов программы, отслеживая возможные ошибочные (исключительные) ситуации и выполняя их обработку.

Оператор начинается с ключевого слова Попытка и заканчивается ключевым словом КонецПопытки, после которого обязательно следует разделитель операторов ; (точка с запятой) (см. подробнее главу «Знакомство с программными модулями»). После ключевого слова Попытка и до ключевого слова Исключение размещается блок потенциально ошибочных операторов, для которых наиболее вероятна ошибка времени выполнения. После ключевого слова Исключение и до ключевого слова КонецПопытки располагаются операторы обработки исключительной ситуации.

Если в процессе выполнения любого оператора из блока потенциально ошибочных операторов (включая вызовы процедур и функций любого уровня вложенности) возникнет исключительная ситуация, выполнение этого оператора немедленно прекращается, а управление передается первому оператору, расположенному за ключевым словом Исключение. Если же блок потенциально ошибочных операторов отработал без ошибок, операторы обработки исключительной ситуации пропускаются, а управление передается первому оператору после ключевого слова КонецПопытки.

Конструкции Попытка ... КонецПопытки могут быть вложенными. При этом, если возникнет исключительная ситуация, ее обработка выполняется ближайшим блоком операторов Исключение ... КонецПопытки. Чтобы передать управление операторам обработки исключений на уровень выше, существует специальный оператор ВызватьИсключение. Если операторы обработки исключений более верхнего уровня будут найдены, управление передается им. В противном случае, выполнение программы прекращается с выдачей первоначальной ошибки.

Для доступа к описанию ошибки, приведшей к исключительной ситуации, во встроенном языке есть специальная функция ОписаниеОшибки(). Ее, как и оператор ВызватьИсключение, следует использовать только внутри блока операторов обработки исключения Исключение ... КонецПопытки

Следует отметить, что пользовательские исключения не поддерживаются.

Пример использования

Пример кода с использованием оператора Попытка

//в документ добавлен новый реквизит табличной части <Цена>
//теперь необходимо заполнить цены во всех документах
ДокументыМенеджер = СоздатьОбъект("Документ.РеализацияТМЦ");
ДокументыМенеджер.ВыбратьДокументы(ДатаНачала, ДатаОкончания);
Пока ДокументыМенеджер.ПолучитьДокумент() = 1 Цикл
    Попытка
        ДокументОбъект = СоздатьОбъект("Документ.РеализацияТМЦ");
        ДокументОбъект.НайтиДокумент(ДокументыМенеджер.ТекущийДокумент());
        //ошибка в обработке одного документа не должна приводить к прекращению всей обработки
        ДокументОбъект.ВыбратьСтроки();
        Пока ДокументОбъект.ПолучитьСтроку() = 1 Цикл
            ДокументОбъект.Цена = ДокументОбъект.Сумма / ДокументОбъект.Количество;
        КонецЦикла;
        ДокументОбъект.Записать();
    Исключение
        //информация обо всех ошибках выводится в окно сообщений
        Сообщить("" + ДокументОбъект + ": " + ОписаниеОшибки(), "!!!");
    КонецПопытки;
КонецЦикла;

Читайте также:

  1. Функция ОписаниеОшибки()

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *