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()