TRY FINALLY EXCEPT — различия между версиями

Материал из GB wiki
Перейти к: навигация, поиск
Строка 33: Строка 33:
 
* "Ошибка преобразования даты"
 
* "Ошибка преобразования даты"
 
* "Продолжаем выполнение..."
 
* "Продолжаем выполнение..."
 
  
 
<br>
 
<br>
 
Пример 2.
 
Пример 2.
 
  :SDt:=`aaa`,
 
  :SDt:=`aaa`,
  TRY(STRTODATE(:SDt),
+
  '''TRY'''(STRTODATE(:SDt),
   EXCEPT(
+
   '''EXCEPT'''(
 
     INFO(`Ошибка преобразования даты`),
 
     INFO(`Ошибка преобразования даты`),
     RAISE()
+
     '''RAISE'''()
 
   )
 
   )
 
  ),
 
  ),
Строка 50: Строка 49:
 
* "'aaa' is not a valid date and time"
 
* "'aaa' is not a valid date and time"
 
и выполнение скрипта будет прервано.
 
и выполнение скрипта будет прервано.
 
  
 
<br>
 
<br>
 
Пример 3.
 
Пример 3.
 
  :SDt:=`aaa`,
 
  :SDt:=`aaa`,
  TRY(STRTODATE(:SDt),
+
  '''TRY'''(STRTODATE(:SDt),
   FINALLY(
+
   '''FINALLY'''(
 
     IIF(
 
     IIF(
 
       STRLEN(:SDt)<>10,
 
       STRLEN(:SDt)<>10,
Строка 68: Строка 66:
 
* "Некорректная строка с датой"
 
* "Некорректная строка с датой"
 
* "'aaa' is not a valid date and time"
 
* "'aaa' is not a valid date and time"
 
+
и выполнение скрипта будет прервано.
 
}}
 
}}

Версия 13:12, 13 марта 2015

Функции для работы с ошибками.

Синтаксис

TRY(выражение, выражение, ..., FINALLY(выражение, выражение, ...) )
или
TRY(выражение, выражение, ..., EXCEPT(выражение, выражение, ...) )
или
TRY(выражение, выражение, ..., EXCEPT(выражение, выражение, ..., RAISE() ) )

Аргументы

блок TRY
в блоке TRY находятся выражения, выполнение которых нужно проконтролировать
блок FINALLY
в блоке FINALLY находятся выражения, которые нужно выполнить независимо от того, возникло или нет исключение при выполнении блока TRY
блок EXCEPT
в блоке EXCEPT находятся выражения, которые будут выполнены только в том случае, если в блоке TRY возникнет исключение. При этом исключение считается обработанным и выполнение скрипта не прерывается стандартным сообщением об ошибке
RAISE()
функция RAISE(), помещённая в блок EXCEPT, возобновляет исключение, проталкивая его во внешний обработчик, или если такового нет, то в стандартный обработчик исключений

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

Нет

Примеры

Пример 1.

:SDt:=`aaa`,
TRY(STRTODATE(:SDt),
    EXCEPT(
        INFO(`Ошибка преобразования даты`)
    )
),
INFO(`Продолжаем выполнение...`)

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

  • "Ошибка преобразования даты"
  • "Продолжаем выполнение..."


Пример 2.

:SDt:=`aaa`,
TRY(STRTODATE(:SDt),
  EXCEPT(
    INFO(`Ошибка преобразования даты`),
    RAISE()
  )
),
INFO(`Продолжаем выполнение...`)

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

  • "Ошибка преобразования даты"
  • "'aaa' is not a valid date and time"

и выполнение скрипта будет прервано.


Пример 3.

:SDt:=`aaa`,
TRY(STRTODATE(:SDt),
  FINALLY(
    IIF(
      STRLEN(:SDt)<>10,
      INFO(`Некорректная строка с датой`)
    )
  )
),
INFO(`Продолжаем выполнение...`)

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

  • "Некорректная строка с датой"
  • "'aaa' is not a valid date and time"

и выполнение скрипта будет прервано.