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)
- Продолжаем выполнение...