TRY FINALLY EXCEPT

Материал из GB wiki
Перейти к: навигация, поиск

Функции для работы с ошибками.

Синтаксис

TRY(выражение, выражение, ..., FINALLY(выражение, выражение, ...)
или
TRY(выражение, выражение, ..., EXCEPT(выражение, выражение, ...))

Аргументы

блок TRY
в блоке TRY находятся выражения, которые нужно проконтролировать на ошибки
блок FINALLY
в блоке FINALLY находятся выражения, которые нужно выполнить независимо от того, возникли или нет ошибки при выполнении блока TRY


блок EXCEPT
в блоке EXCEPT находятся выражения, которые будут выполнены только если в блоке TRY возникнет ошибка

Тип результата

Нет

Примеры

Пример 1.

TRY(<выражение, выражение, ...>, <--блок кода, защищаемый от ошибок,
    EXCEPT(
        <выражение, выражение, ...,> <--эти выражения выполнятся только в том случае, если в блоке TRY возникла ошибка
    )
)

В блоке TRY находятся выражения, контролируемые на ошибки.
Если в одном из этих выражений возникнет ошибка, выполнение блока TRY прервётся, а управление будет передано на блок EXCEPT, после чего выполнятся выражения уже этого блока.
При этом работа всего скрипта не будет прервана и продолжится после конструкции TRY...EXCEPT.


Пример 2.

TRY(<выражение, выражение, ...>, <--блок кода, защищаемый от ошибок,
    FINALLY(
        <выражение, выражение, ...> <--эти выражения выполнятся всегда, независимо от ошибок в блоке TRY
    )
)

В блоке TRY находятся выражения, контролируемые на ошибки.
Если в одном из этих выражений возникнет ошибка, выполнение блока TRY прервётся, а управление будет передано на блок EXCEPT, после чего выполнятся выражения уже этого блока.
При этом работа всего скрипта не будет прервана и продолжится после конструкции TRY...EXCEPT. В случае возникновения ошибки во время выполнения выражений в блоке TRY управление будет передано на блок EXCEPT, после чего выполнятся выражения этого блока. При этом работа всего скрипта не будет прервана и продолжится после TRY...EXCEPT.

Пример 3.

TRY(<выражение, выражение, ...>, <--блок кода, защищаемый от ошибок,
    EXCEPT(
        <выражение, выражение, ...>, <--эти выражения выполнятся только в том случае, если в блоке TRY возникла ошибка
        RAISE()
    )
)


    )
),
EXCEPT(
Info(`Ругаемся на ашипку!`),
RAISE()
)
),
Info(`Опаньки, продолжаем выполнение!`)