PopError

From SunFlurry wiki
Jump to: navigation, search
  PopError (Функции работы с исключениями)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Визуальность:Нет

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

Синтаксис

PopError(<Режим (INT)>=15):<Описание исключения (STRING)>

Аргументы

  • <Режим (INT)> - (необязательный аргумент) Режим создания текста исключения. Параметр представляет собой битовую маску, состоящую из:
    • бит 0 (1) (по умолчанию) -- включает в описание место исключения в программном тексте (в виде (<Внутренний номер исключения> at <Строка>:<Столбец>))
    • бит 1 (2) (по умолчанию) -- включает в описание информацию о типе исключения (к примеру Division error)
    • бит 2 (4) (по умолчанию) -- включает в описание специфическую информацию об исключении (к примеру имя реквизита, который не был найден в заданном объекте, что послужило причиной исключения)
    • бит 3 (8) (по умолчанию) -- включает в описание путь к модулю, внутри которого произошло исключение.

Возвращаемое значение

Возвращает описание исключения в виде UTF-16 строки.

Примеры

Message(1);
Try
  Message(2);
  Raise "Пользовательское исключение";
  Message(3);
Except
  Message(4);
  Message(PopError(2),"!");
  Message(PopError(),"!");
EndTry;
Message(5);

//Последовательность выводит в лог следующую информацию:
//1
//2
//4
//User defined error
// 
//5
//
//Второй вызов PopError() уже не получает информации об исключении, так как первый вызов удалил ее из очереди исключений.