TRY FINALLY EXCEPT — различия между версиями
Материал из GB wiki
Alexey (обсуждение | вклад) |
Alexey (обсуждение | вклад) |
||
Строка 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()