错误陷阱(运行错误)语句简介-王樵民
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


错误陷阱(运行错误)语句简介

发表时间:2010/7/9 10:18:52 评论(0) 浏览(8871)  评论 | 加入收藏 | 复制
   
摘 要:本文介绍错误陷阱的基本方法,为下一篇错误陷阱的妙用打基础。
正 文:

错误陷阱(运行错误)语句简介
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  '指明最初生成错误的对象或应用程序的名称。



Access软件网交流QQ群(群号:198465573)
 
 相关文章
UMV快速平台出现“控件或子窗体控件放置在这个位置太大了”错误解决...  【缪炜  2013/6/7】
Access开发平台{专业版}编译该函数时发生错误。Visual ...  【麥田  2013/6/8】
Access编译错误:用户定义类型未定义--Dim RegExp ...  【麥田  2013/6/9】
Access编译错误:用户定义类型未定义--Dim Nodinde...  【麥田  2013/6/14】
Access之错误代码3008\Access运行时错误'3008'...  【杏林求真  2013/6/17】
常见问答
技术分类
相关资源
文章搜索
关于作者

王樵民

文章分类

文章存档

友情链接