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