CATCHERROR — различия между версиями
Материал из GB wiki
Alexey (обсуждение | вклад) |
Alexey (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
{{Функция ГБ | {{Функция ГБ | ||
|Название=CATCHERROR | |Название=CATCHERROR | ||
| − | |Описание=Выполняет первое выражение. Если при выполнении возникает ошибка - помещает ее код и описание в переменные _ErrorCode и _ErrorParams и выполняет второе выражение. | + | |Описание=Выполняет первое выражение. Если при выполнении возникает ошибка - помещает ее код и описание в переменные _ErrorCode и _ErrorParams и выполняет второе выражение. Также можно использовать объект '''E''' для работы с ошибками. Например: E.ClassName(), E.Message() |
|Синтаксис=CATCHERROR('''Выражение 1''','''Выражение 2''') | |Синтаксис=CATCHERROR('''Выражение 1''','''Выражение 2''') | ||
|Аргументы= | |Аргументы= | ||
| Строка 11: | Строка 11: | ||
|Пояснение=произвольное выражение. | |Пояснение=произвольное выражение. | ||
}} | }} | ||
| − | |Пример=CATCHERROR( | + | |Пример=Пример 1. |
| − | + | CATCHERROR( | |
| − | + | OPENDATASET( | |
| − | + | `goodies_autofix`, | |
| − | + | [ | |
| − | + | `Type,I` : 1, | |
| − | + | `Ids,B` : Articul | |
| − | + | ], | |
| − | + | `` | |
| − | + | ), | |
| − | + | ( | |
| − | + | :errors:=:errors+ifempty(:errors,``,\)+Articul, | |
| − | <br | + | :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)
- Продолжаем выполнение...