CATCHERROR

Материал из GB wiki
Перейти к: навигация, поиск

Выполняет первое выражение. Если при выполнении возникает ошибка - помещает ее код и описание в переменные _ErrorCode и _ErrorParams и выполняет второе выражение. Также можно использовать объект E для работы с ошибками. Например: E.ClassName(), E.Message()

Синтаксис

CATCHERROR(Выражение 1,Выражение 2)

Аргументы

Выражение 1
произвольное выражение.
Выражение 2
произвольное выражение.

Тип результата

Нет

Примеры

Пример 1.

CATCHERROR(
  OPENDATASET(
    `goodies_autofix`,
    [
     `Type,I` : 1,
     `Ids,B` : Articul
    ],
    ``
  ),
  (
    :errors:=:errors+ifempty(:errors,``,\)+Articul,
    :errcnt:=:errcnt+1
  )
)

Пытается выполнить восстановление партий по товару. Если происходит ошибка, запоминает код товара и увеличивает счетчик ошибок. При этом выполнение скрипта не прерывается.


Пример 2.

:SDt:=`aaa`,
CATCHERROR(
  STRTODATE(:SDt),
  INFO(
    `Произошла какая-то ошибка... Определим её тип.`
    + \
    + `Класс ошибки: `
    + E.ClassName()
    + \
    + `Текст ошибки: `
    + E.Message()
  )
),
INFO(`Продолжаем выполнение...`)

Будут выведены следующие сообщения:

  • Произошла какая-то ошибка... Определим её тип.
Класс ошибки: EConvertError
Текст ошибки: 'aaa' is not a valid date and time
в выражении
STRTODATE(:SDt)
  • Продолжаем выполнение...