Skip to content

ON ERROR


用于设置当前错误处理程序的错误处理语句。

语法

On [Local] Error Goto label

参数

label

发生错误时跳转到的标签。

描述

On Error 在发生错误时触发跳转到错误处理程序。此类错误可以由内置语句(如 Open)触发,或在使用 Error 语句时触发。

注意:只有在使用 -e-ex-exx 选项之一编译程序时,才会启用内置语句的错误检查。即使未使用这些选项,On ErrorError 语句的配合仍然有效。

On Local Error 可用于在过程内指定局部错误处理程序。这允许每个过程专门的错误处理,并会覆盖全局错误处理程序(如果有的话)。

不使用 Local 时,处理程序必须在模块的主体部分。

备注:目前,Local 子句被编译器忽略。

On Error Goto 0 停用当前错误处理程序。

示例

start GeSHi

vb
'' Compile with QB (-lang qb) dialect

'$lang: "qb"

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

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

end GeSHi

start GeSHi

vb
'' compile as: 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

end GeSHi

与 QB 的差异

  • QB 没有 LOCAL 子句,要求标签必须在模块的主体部分。

参见

  • Error
  • Local
  • Err
  • Runtime Error Codes
  • Error Handling
  • Labels

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系