On Error
 
错误处理语句设置当前错误处理程序

语法

On [Local] Error Goto label

参数

label
发生错误时跳转到标签

说明

当发生错误时,出错触发跳转到错误处理程序。这样的错误可以由Open等内置语句触发,或者使用Error语句。

注意:仅当程序使用-e -ex -exx 选项之一编译时,才会启用内置语句的错误检查。出错仍然使用Error,即使没有使用这些选项。

On Local Error可用于在过程中指定本地错误处理程序。这允许专门的每过程错误处理,并将覆盖全局错误处理程序(如果有的话)。没有Local,处理程序必须在模块的主要部分。
备注:目前,编译器忽略Local子句。

On Error Goto 0取消激活当前的错误处理程序。

例子

''编译QB(-lang qb)方言

'$ lang:“qb”

On Error Goto errorhandler
Error 24 ''模拟一个错误
Print "此消息将不会被看到"

errorhandler:
Print "错误#"; 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 "文件存在(0 = false):"; hFileExists( Command )

    On Error Goto errhandler
    Error 1234
    Print "接下来的简历"
    End 0

errhandler:
    Print "错误号码:" + Str( Err ) + "在线:" + Str( Erl )
    Resume Next


与QB差别

  • QB没有LOCAL子句,并且要求标签位于模块的主要部分。

参考