CATCHERROR — различия между версиями
Материал из GB wiki
Bars (обсуждение | вклад) |
Alexey (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
{{Функция ГБ | {{Функция ГБ | ||
|Название=CATCHERROR | |Название=CATCHERROR | ||
− | |Описание=Выполняет первое выражение. Если при выполнении возникает ошибка - помещает ее код и описание в переменные _ErrorCode и _ErrorParams и выполняет второе выражение. | + | |Описание=Выполняет первое выражение. Если при выполнении возникает ошибка - помещает ее код и описание в переменные _ErrorCode и _ErrorParams и выполняет второе выражение. Также можно использовать объект '''E''' для работы с ошибками. Например: E.ClassName(), E.Message() |
|Синтаксис=CATCHERROR('''Выражение 1''','''Выражение 2''') | |Синтаксис=CATCHERROR('''Выражение 1''','''Выражение 2''') | ||
|Аргументы= | |Аргументы= | ||
Строка 11: | Строка 11: | ||
|Пояснение=произвольное выражение. | |Пояснение=произвольное выражение. | ||
}} | }} | ||
− | |Пример=CATCHERROR( | + | |Пример=Пример 1. |
− | OPENDATASET( | + | CATCHERROR( |
− | + | OPENDATASET( | |
− | + | `goodies_autofix`, | |
− | + | [ | |
− | + | `Type,I` : 1, | |
− | + | `Ids,B` : Articul | |
− | + | ], | |
− | + | `` | |
− | + | ), | |
− | + | ( | |
+ | :errors:=:errors+ifempty(:errors,``,\)+Articul, | ||
+ | :errcnt:=:errcnt+1 | ||
+ | ) | ||
+ | ) | ||
+ | |||
+ | Пытается выполнить восстановление партий по товару. Если происходит ошибка, запоминает код товара и увеличивает счетчик ошибок. При этом выполнение скрипта не прерывается. | ||
+ | |||
+ | <br> | ||
+ | Пример 2. | ||
+ | |||
+ | :SDt:=`aaa`, | ||
+ | CATCHERROR( | ||
+ | STRTODATE(:SDt), | ||
+ | INFO( | ||
+ | `Произошла какая-то ошибка... Определим её тип.` | ||
+ | + \ | ||
+ | + `Класс ошибки: ` | ||
+ | + E.ClassName() | ||
+ | + \ | ||
+ | + `Текст ошибки: ` | ||
+ | + E.Message() | ||
+ | ) | ||
+ | ), | ||
+ | INFO(`Продолжаем выполнение...`) | ||
+ | |||
+ | Будут выведены следующие сообщения: | ||
+ | * Произошла какая-то ошибка... Определим её тип. | ||
+ | :Класс ошибки: EConvertError | ||
+ | :Текст ошибки: 'aaa' is not a valid date and time | ||
+ | :в выражении | ||
+ | :STRTODATE(:SDt) | ||
+ | * Продолжаем выполнение... | ||
+ | |||
+ | |||
}} | }} |
Текущая версия на 08:53, 17 марта 2015
Выполняет первое выражение. Если при выполнении возникает ошибка - помещает ее код и описание в переменные _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)
- Продолжаем выполнение...