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

Материал из GB wiki
Перейти к: навигация, поиск
Строка 21: Строка 21:
 
  |Название=RAISE()
 
  |Название=RAISE()
 
  |Пояснение=функция RAISE(), помещённая в блок EXCEPT, возобновляет исключение, проталкивая его во внешний обработчик или, если такового нет - в стандартный обработчик исключений
 
  |Пояснение=функция RAISE(), помещённая в блок EXCEPT, возобновляет исключение, проталкивая его во внешний обработчик или, если такового нет - в стандартный обработчик исключений
 +
<br/>{{Аргумент
 +
|Название=объект E
 +
|Пояснение=E - объект для работы с ошибками. Например: E.ClassName(), E.Message()
 
}}|Пример=Пример 1.
 
}}|Пример=Пример 1.
 
  :SDt:=`aaa`,
 
  :SDt:=`aaa`,
Строка 68: Строка 71:
 
* "'aaa' is not a valid date and time"
 
* "'aaa' is not a valid date and time"
 
и выполнение скрипта будет прервано.
 
и выполнение скрипта будет прервано.
 +
 +
<br>
 +
Пример 4.
 +
 +
Можно использовать объект '''E''' для работы с ошибками:
 +
 +
:SDt:=`aaa`,
 +
'''TRY'''(
 +
  STRTODATE(:SDt),
 +
  '''EXCEPT'''(
 +
    INFO(
 +
      `Произошла какая-то ошибка... Определим её тип.`
 +
      + \
 +
      + `Класс ошибки: `
 +
      + '''E.ClassName()'''
 +
      + \
 +
      + `Текст ошибки: `
 +
      + '''E.Message()'''
 +
    )
 +
  )
 +
),
 +
INFO(`Продолжаем выполнение...`)
 +
 +
Будут выведены следующие сообщения:
 +
* Произошла какая-то ошибка... Определим её тип.
 +
:Класс ошибки: EConvertError
 +
:Текст ошибки: 'aaa' is not a valid date and time
 +
:в выражении
 +
:STRTODATE(:SDt)
 +
* Продолжаем выполнение...
 
}}
 
}}

Версия 08:32, 17 марта 2015

{{Функция ГБ |Название=TRY...FINALLY...EXCEPT |Описание=Функции для работы с ошибками. |Синтаксис=TRY(выражение, выражение, ..., FINALLY(выражение, выражение, ...) )
или
TRY(выражение, выражение, ..., EXCEPT(выражение, выражение, ...) )
или
TRY(выражение, выражение, ..., EXCEPT(выражение, выражение, ..., RAISE() ) ) |Аргументы=

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


объект E
E - объект для работы с ошибками. Например: E.ClassName(), E.Message()