On Error
 
Оператор обработки ошибок для установки текущего обработчика ошибок

Синтаксис

On [Local] Error Goto label

Параметры

label
Метка для перехода при возникновении ошибки

Описание

On Error вызывает переход к обработчику ошибок при возникновении ошибки. Такие ошибки могут быть вызваны встроенными заявлениями, такими как Open, или когда используется оператор Error.

Примечание: Проверка ошибок для встроенных инструкций включается только если программа скомпилирована с одной из опций -e, -ex или -exx . On Error работает с Error , даже когда ни одна из опций не используется.

On Local Error может быть использована для указания локального обработчика ошибок внутри процедуры. Это позволяет устанавливать специализированный обработчик ошибок для процедуры и переопределяет глобальный обработчик ошибок, если таковой имеется. Без Local, обработчик должен быть в основной части модуля.
Примечание: в настоящее время, Local игнорируется компилятором.

On Error Goto 0  отключает текущий обработчик ошибок.

Пример

'' Компилировать с диалектом QB (-lang qb)

'$lang: "qb"

On Error Goto errorhandler
Error 24 '' simulate an error
Print "this message will not be seen"

errorhandler:
Print "Error #"; Err; "!"
End


'' Компиляция: fbc onerror.bas -ex

#lang "fblite"

Function hFileExists( filename As String ) As Integer Static
    Dim f As Integer

    hFileExists = 0

    On Local Error Goto exitfunction

    f = FreeFile
    Open filename For Input As #f
    
    Close #f

    hFileExists = -1

exitfunction:
    Exit Function
End Function


    Print "File exists (0=false): "; hFileExists( Command )

    On Error Goto errhandler
    Error 1234
    Print "back from resume next"
    End 0

errhandler:
    Print "error number: " + Str( Err ) + " at line: " + Str( Erl )
    Resume Next


Отличия от QB

  • QB не имеет LOCAL(локальных пунктов) и требует чтобы метка была в основной части модуля.

См. также