CATCHERROR — различия между версиями

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

Текущая версия на 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)
  • Продолжаем выполнение...