TRY FINALLY EXCEPT — различия между версиями
Материал из GB wiki
Alexey (обсуждение | вклад) |
Alexey (обсуждение | вклад) |
||
| Строка 3: | Строка 3: | ||
|Название=TRY...FINALLY...EXCEPT | |Название=TRY...FINALLY...EXCEPT | ||
|Описание=Функции для работы с ошибками. | |Описание=Функции для работы с ошибками. | ||
| − | |Синтаксис='''TRY'''(''выражение, выражение, ...'', '''FINALLY'''(''выражение, выражение, ...'') | + | |Синтаксис='''TRY'''(''выражение, выражение, ...'', '''FINALLY'''(''выражение, выражение, ...'') ) |
<br/>или | <br/>или | ||
| − | <br/>'''TRY'''(''выражение, выражение, ...'', '''EXCEPT'''(''выражение, выражение, ...'')) | + | <br/>'''TRY'''(''выражение, выражение, ...'', '''EXCEPT'''(''выражение, выражение, ...'') ) |
| + | <br/>или | ||
| + | <br/>'''TRY'''(''выражение, выражение, ...'', '''EXCEPT'''(''выражение, выражение, ...'', '''RAISE'''() ) ) | ||
|Аргументы= | |Аргументы= | ||
{{Аргумент | {{Аргумент | ||
| Строка 12: | Строка 14: | ||
}}<br/>{{Аргумент | }}<br/>{{Аргумент | ||
|Название=блок FINALLY | |Название=блок FINALLY | ||
| − | |Пояснение=в блоке FINALLY находятся выражения, которые нужно выполнить независимо от того, | + | |Пояснение=в блоке FINALLY находятся выражения, которые нужно выполнить независимо от того, возникла или нет ошибка при выполнении блока TRY |
| − | }} | + | }}<br/>{{Аргумент |
| − | <br/>{{Аргумент | ||
|Название=блок EXCEPT | |Название=блок EXCEPT | ||
|Пояснение=в блоке EXCEPT находятся выражения, которые будут выполнены только если в блоке TRY возникнет ошибка | |Пояснение=в блоке EXCEPT находятся выражения, которые будут выполнены только если в блоке TRY возникнет ошибка | ||
}}|Пример=Пример 1. | }}|Пример=Пример 1. | ||
| − | '''TRY'''( | + | :SDt:=`aaa`, |
| + | '''TRY'''(STRTODATE(:SDt), | ||
'''EXCEPT'''( | '''EXCEPT'''( | ||
| − | + | INFO(`Ошибка преобразования даты`) | |
) | ) | ||
| − | ) | + | ), |
| + | INFO(`Продолжаем выполнение...`) | ||
| + | |||
| + | Будут выведены следующие сообщения: | ||
| + | * "Ошибка преобразования даты" | ||
| + | * "Продолжаем выполнение..." | ||
| − | |||
| − | |||
| − | |||
<br> | <br> | ||
Пример 2. | Пример 2. | ||
| − | + | :SDt:=`aaa`, | |
| − | + | TRY(STRTODATE(:SDt), | |
| − | + | EXCEPT( | |
| − | + | INFO(`Ошибка преобразования даты`), | |
| − | + | RAISE() | |
| + | ) | ||
| + | ), | ||
| + | INFO(`Продолжаем выполнение...`) | ||
| + | |||
| + | Будут выведены следующие сообщения: | ||
| + | * "Ошибка преобразования даты" | ||
| + | * "'aaa' is not a valid date and time" | ||
| + | и выполнение скрипта будет прервано. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| + | <br> | ||
Пример 3. | Пример 3. | ||
| − | + | :SDt:=`aaa`, | |
| − | + | TRY(STRTODATE(:SDt), | |
| − | + | FINALLY( | |
| − | + | IIF( | |
| + | STRLEN(:SDt)<>10, | ||
| + | INFO(`Некорректная строка с датой`) | ||
) | ) | ||
| − | + | ) | |
| − | + | ), | |
| − | + | INFO(`Продолжаем выполнение...`) | |
| − | + | ||
| − | + | Будут выведены следующие сообщения: | |
| − | + | * "Некорректная строка с датой" | |
| − | + | * "'aaa' is not a valid date and time" | |
| − | |||
| − | |||
}} | }} | ||
Версия 12:51, 13 марта 2015
Функции для работы с ошибками.
Синтаксис
TRY(выражение, выражение, ..., FINALLY(выражение, выражение, ...) )
или
TRY(выражение, выражение, ..., EXCEPT(выражение, выражение, ...) )
или
TRY(выражение, выражение, ..., EXCEPT(выражение, выражение, ..., RAISE() ) )
Аргументы
- блок TRY
- в блоке TRY находятся выражения, которые нужно проконтролировать на ошибки
- блок FINALLY
- в блоке FINALLY находятся выражения, которые нужно выполнить независимо от того, возникла или нет ошибка при выполнении блока TRY
- блок EXCEPT
- в блоке EXCEPT находятся выражения, которые будут выполнены только если в блоке TRY возникнет ошибка
Тип результата
- Нет
Примеры
Пример 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"