错误陷阱(运行错误)语句简介
On Error 语句:启动一个错误处理程序并指定该子程序在一个过程中的位置;也可用来禁止一个错误处理程序。
其语法有三种形式:
1、On Error GoTo line :启动错误处理程序,且该例程从必要的 line 参数中指定的 line 开始。line 参数可以是任何行标签或行号。如果发生一个运行时错误,则控件会跳到 line,激活错误处理程序。指定的 line 必须在一个过程中,这个过程与 On Error 语句相同; 否则会发生编译时间错误
一般语法格式
Sub 过程1(Var1, Var2, Var3, Var4)
On Error GoTo ErrorHandler
. . .
Exit Sub
ErrorHandler:
. . .
Resume Next
End Sub
该语句两种表示方法:
A、On Error GoTo 行号
示例1:本例中假设窗体上有一个按钮Command0,其单击事件的代码如下:
Private Sub Command0_Click()
On Error GoTo 100
DoCmd.OpenForm "窗体X"
Exit Sub
100 MsgBox ("错误号:" & Err.Number & ",错误描述:" & Err.Description)
End Sub
如果窗体X不存在,则就会进入错误陷阱程序,显示错误号及错误提示信息
B、On Error GoTo 标签
示例2:
Private Sub Command0_Click()
On Error GoTo err1
DoCmd.OpenForm "窗体X"
Exit Sub
err1:
MsgBox ("错误号:" & Err.Number & ",错误描述:" & Err.Description)
End Sub
示例2与示例1等效。
示例3:本例中假设窗体上有一个按钮Command0,其单击事件的代码如下:
Private Sub Command0_Click()
On Error GoTo err1
DoCmd.OpenForm "窗体X"
DoCmd.OpenForm "窗体1"
Exit Sub
err1:
MsgBox ("错误号:" & Err.Number & ",错误描述:" & Err.Description)
Resume Next '返回执行出错后的下一跳代码
End Sub
如果窗体X不存在,则就会进入错误陷阱程序,显示错误号及错误提示信息,接着执行DoCmd.OpenForm "窗体1"语句,如果窗体1存在则打开窗体,否则显示错误信息。
2、On Error Resume Next
On Error Resume Next 会使程序从紧随产生错误的语句之后的语句继续执行,或是从紧随最近一次调用含有 On Error Resume Next 语句的过程的语句继续运行。这个语句可以置运行时错误于不顾,使程序得以继续执行。可以将错误处理程序放置在错误发生的地方,而不必将控件传输到过程中的其它位置。在调用另一个过程时,On Error Resume Next 语句成为非活动的,所以,如果希望在例程中进行嵌入错误处理,则应在每一个调用的例程中执行 On Error Resume Next 语句。
示例4:本例中假设窗体上有一个按钮Command0,其单击事件的代码如下:
Private Sub Command0_Click()
On Error Resume Next
DoCmd.OpenForm "窗体X"
DoCmd.OpenForm "窗体1"
End Sub
如果窗体X不存在,接着执行DoCmd.OpenForm "窗体1"语句,如果窗体1存在则打开窗体,否则什么也没做。
3、On Error GoTo 0 停止在当前过程中处理错误
关闭错我处理陷阱,错误陷阱失效。
可利用Err对象返回含有关于运行时错误的信息。
Err.Description '错误信息描述
Err.Number '错误号码
Err.Source '指明最初生成错误的对象或应用程序的名称。