TRY FINALLY EXCEPT — различия между версиями

Материал из GB wiki
Перейти к: навигация, поиск
Строка 8: Строка 8:
 
|Аргументы=
 
|Аргументы=
 
{{Аргумент
 
{{Аргумент
  |Название=Имя контейнера
+
  |Название=блок TRY
  |Пояснение=имя контейнера, для которого устанавливается порядок обхода. Если задана пустая строка - порядок обхода устанавливается во всей форме.
+
  |Пояснение=в блоке TRY находятся выражения, которые нужно проконтролировать на ошибки
 
}}<br/>{{Аргумент
 
}}<br/>{{Аргумент
  |Название=Способ обхода
+
  |Название=блок FINALLY
  |Пояснение=кодовое слово, определяющее способ обхода полей. Может принимать одно из значений:
+
  |Пояснение=в блоке FINALLY находятся выражения, которые нужно выполнить независимо от того, возникли или нет ошибки при выполнении блока TRY
 
}}
 
}}
|Пример=Пример 1.
+
<br/>{{Аргумент
  '''TRY'''(<выражение, выражение, ...,> ''<--блок кода, защищаемый от ошибок'',
+
|Название=блок EXCEPT
 +
|Пояснение=в блоке EXCEPT находятся выражения, которые будут выполнены только если в блоке TRY возникнет ошибка
 +
}}|Пример=Пример 1.
 +
  '''TRY'''(<выражение, выражение, ...>, ''<--блок кода, защищаемый от ошибок'',
 
     '''EXCEPT'''(
 
     '''EXCEPT'''(
         <выражение, выражение, ...,> ''<--сюда будет передано управление только в том случае, если возникнет ошибка в блоке TRY>''
+
         <выражение, выражение, ...,> ''<--эти выражения выполнятся только в том случае, если в блоке TRY возникла ошибка''
 +
    )
 +
)
  
     FINALLY(
+
В блоке TRY находятся выражения, контролируемые на ошибки.
         <выражения, которые выполняются всегда, независимо от ошибок
+
<br>Если в одном из этих выражений возникнет ошибка, выполнение блока TRY прервётся, а управление будет передано на блок EXCEPT, после чего выполнятся выражения уже этого блока.
 +
<br>При этом работа всего скрипта не будет прервана и продолжится после конструкции TRY...EXCEPT.
 +
 
 +
<br>
 +
Пример 2.
 +
'''TRY'''(<выражение, выражение, ...>, ''<--блок кода, защищаемый от ошибок'',
 +
     '''FINALLY'''(
 +
         <выражение, выражение, ...> ''<--эти выражения выполнятся всегда, независимо от ошибок в блоке TRY''
 +
    )
 +
)
 +
 
 +
В блоке TRY находятся выражения, контролируемые на ошибки.
 +
<br>Если в одном из этих выражений возникнет ошибка, выполнение блока TRY прервётся, а управление будет передано на блок EXCEPT, после чего выполнятся выражения уже этого блока.
 +
<br>При этом работа всего скрипта не будет прервана и продолжится после конструкции TRY...EXCEPT.
 +
В случае возникновения ошибки во время выполнения выражений в блоке TRY управление будет передано на блок EXCEPT, после чего выполнятся выражения этого блока. При этом работа всего скрипта не будет прервана и продолжится после TRY...EXCEPT.
 +
 
 +
Пример 3.
 +
'''TRY'''(<выражение, выражение, ...>, ''<--блок кода, защищаемый от ошибок'',
 +
    '''EXCEPT'''(
 +
        <выражение, выражение, ...>, ''<--эти выражения выполнятся только в том случае, если в блоке TRY возникла ошибка''
 +
        RAISE()
 +
    )
 +
)
 
<br/>    )
 
<br/>    )
 
<br/>  ),
 
<br/>  ),

Версия 11:48, 13 марта 2015

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

Синтаксис

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(`Опаньки, продолжаем выполнение!`)