第十章 错误处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十章错误处理
教学内容:
一、设置错误陷阱
二、编写错误处理程序
教学要求:
了解错误处理、错误陷阱的概念
掌握编写错误处理程序的基本方法
§10.1 设置错误陷阱
1.1设置错误陷阱语句
VB用ON Error语句捕捉程序运行时的错误,以便设置错误陷阱,并利用Err对象及相关的属性、方法确定程序运行时的错误起因,以选择相应的解决措施,实现在线错误处理。语句格式:ON Error语句有3种基本格式
•格式1:ON Error Goto<行号>
•格式2: ON Error Goto 0
•格式3: ON Error Resume Next
功能:设置或取消错误捕捉功能。
说明:
(1)用语句设置的错误捕捉功能一直起作用,直到另一个语句取消所设置的错误捕捉功能。
(2)格式1设置从指定行号开始的错误处理程序。
(3)格式2取消已设置的错误捕捉程序。
(4)格式3指明发生运行错误时程序跳过错误继续执行,即发生错误时,不对错误做任何处理,直接跳到产生错误语句的下一个语句继续执行。
范例:
Private Sub Form_Load()
on error goto errline
…If n=100
on error resume next
End if
…Exit sub
Errline:
…End sub
10.1.2 Resume语句
语句格式:该语句有3种格式。
•格式1:Resume
•格式2:Resume Next
•格式3:Resume <行号>
功能:该语句放在错误处理程序中,指定执行错误处理程序后继续执行的语句,以便在指定位置恢复程序的执行。
说明:该语句与Return语句类似,但只能用于错误处理程序中,即必须与On Error 语句配套使用。
10.1.3 Err对象和Erl函数
Err对象含有关于运行出错时的错误信息,其属性由错误的生成者设置。该错误生成者可能是Visual Basic系统,也可能是某个对象,或者是程序设计者。 Err对象的默认属性是Number。该默认属性可以直接用对象名称Err表示,所以不必修改以前用函数或语句书写的程序代码。
•出现错误时, Err返回错误的代码,错误代码的取值范围为1-32767。
•Erl函数返回错误语句的行号。若发生错误的程序没有行号,则Erl函数总是返回0。虽然Visual Basic中也可以使用行号,但行号只是某一行的标识,且与旧版本Basic语言兼容,与程序的执行顺序无关。
•只有在发生错误时,Err对象和Erl函数才返回有意义的值,通常把它们放在错误处理程序中,用来确定所发生的是什么错误,以及采取什么操作纠正错误。
例10-1 以下程序可以查出错误代码对应的错误信息。
Private sub command1-click()
dim msg,N1,UsrErr
on Error Goto ErrHand
N1=chr(10)
Msg=“请输入一个错误号查看相应错误信息” UsrErr=inputBox(Msg)
Error UsrErr
Exit Sub
ErrHAND:
Msg=“错误号”&Err&”的错误信息是:”& N1 & N1 &””” ” & Error(Err) &”””” MsgBox Msg
Resume Next
End Sub
§10.2 错误处理程序
应用程序运行过程中,出现错误是不可避免的,硬件出现的问题或用户的误操作,都会造成运行出错,这些错误可能使程序意外地终止,一般无法使应用程序继续运行。有些错误也许不会中断程序运行,但可能使代码产生意想不到的结果。因此,必须用ON ERROR语句捕获错误并执行错误处理程序,以避免应用程序不必要的意处中断。在程序设计中,通过设置错误对象ERR的各种属性,如错误号、描述等,使应用程序在错误发生时可以对错误状况作出响应或处理。
设计错误处理程序包括3个步骤:
1.设置错误捕获
当应用程序执行到ON ERROR语句时,激活错误捕获,用ON ERROR语句指定错误处理程序开始的标号。当错误发生时,通知应用程序在分支点设置或激活错误捕获。当包含错误捕获的过程处于活动时,错误捕获始终是激活的,即直到该过程执行EXTI SUB、EXTI函数、EXIT属性、END SUB、END函数或END属性语句时,错误捕获才停止。尽管在任一时刻任一过程中只能激活一个错误捕获,但可建立几个供选择的错误捕获并在不同的时刻激活不同的错误捕获程序。
2.编写错误处理程序
错误处理程序应对所有能预见的错误都作出响应或处理。错误处理程序的第一步,是添加行标号,行标号标志着错误处理程序的开始。行标号应该有一个具有描述性的名称,其后必须加冒号。
基本的约定:把错误处理代码放在过程末端,该过程在紧靠行标号前方处使用EXIT SUB、EXIT函数或EXIT属性语句。这样,如果未出现错误,过程可避免执行错误处理代码。
错误处理程序体包含实际处理错误的代码,通常以SELECT CASE 或IF…then…else 语句的形式出现。程序中需要确定可能会发生什么错误,对每种错误提供响应的操作方法。•ERR对象的NUMBER属性包含数值型的错误代码,错误代码代表最新的运行错误号。借助ERR 对象与SELECT CASE 或if…then…else 语句的组合,可以对出现的任何错误采取有针对性的处理和操作。
•注意:
包含在ERR对象DESCRIPTION属性中的字符串,可以解释错误,该错误信息与当前的错误号相关联。在不同的visual basic 版本中,其描述的措词有所不同。因此,在错误处理程序中应使用err.number,而不要用err.description识别已发生的具体错误。
3.退出错误处理程序
在错误处理程序中,可以有resume next语句使程序返回出错语句之后的语句。除此以外,还可以根据具体情况,用下表10-1中任一语句退出错误处理程序。