Оператор обработки ошибок для установки текущего обработчика ошибок
Синтаксис
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(локальных пунктов) и
требует чтобы метка была в основной части модуля.
См. также