在Visual Basic中处理错误_第1页
在Visual Basic中处理错误_第2页
在Visual Basic中处理错误_第3页
在Visual Basic中处理错误_第4页
在Visual Basic中处理错误_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、处理错误Eliminare errori1运行时错误应用程序执行时出现的错误往往是由一些不可预见的动作引发的。这些错误都称为运行时错误。通过使用错误处理程序用户可以避免运行时错误,给用户提供有用信息,并正确地退出应用程序。如果程序在Visual Basic开发环境中运行时出现运行时错误,会有消息告知:进入调试模式、寻求帮助或者选择结束应用程序。如果应用程序作为可执行文件执行时出现运行时错误,Visual Basic则显示一则错误消息,应用程序也就此结束。要避免运行时错误,可以编写错误处理程序,修正出错处,提示用户正确操作,或者在程序结束前保存数据。2错误处理介绍错误处理程序是一个例程,它捕获应

2、用程序中出现的错误,并对错误做出反应。如果预料到一个过程可能发生运行时错误,就应该在过程中添加错误处理程序。在错误发生时,通过告知应用程序转向哪段程序可以设定或启用某个错误捕获。Visual Basic在执行On Error语句时会启用错误捕获。包含它的过程处于活动状态时,该错误捕获始终有效。在给定过程中一次只能启用一个错误捕获。另外,错误捕获必须放在本地过程中。不能用On Error语句把应用程序的执行引向另一个过程。如果要使错误捕获无效,可使用On Error Go To语句。编写错误处理例程的第一步是添加一个行号,标志着错误处理程序的开始。行号的名称应是描述性的,后面必须跟一个冒号。常规

3、错误处理程序放在过程结束处,紧跟着Exit Sub或Exit Function的行号之后。这样,在没有错误发生时,过程就不会执行错误处理程序。使用Resume或Resume Next语句就可以退出错误处理例程。Resume语句会执行引发错误的那句代码,Resume Next语句执行引发错误代码的下一句代码。如果错误处理程序能够修正错误,则使用Resume语句,否则就使用Resume Next语句。3使错误捕获有效借助于On Error语句,可以测试可捕获错误并对它做出响应。如果出现运行时错误,则可强制应用程序跳转到由On Error Go To语句指定的标记处。当Visual Basic执行O

4、n Error语句时激活错误捕获,On Error语句指定错误处理程序。当包含错误捕获的过程是活动的时候,错误捕获始终是激活的,也就是说,直到这个过程执行Exit或End语句时,错误捕获才停止。尽管在任一时刻,任一过程中只能激活一个错误捕获,但可建立几个供选择的错误捕获并在不同的时刻激活不同的错误捕获。借助于On Error Go To 0也能停用某一个错误捕获。为设置一个跳转到错误处理例程的错误捕获,可用On Error Go To 行标签语句。4编写错误处理例程编写错误处理例程的第一步是添加行号,标志着错误处理例程开始。行号应该有一个具有描述性的名称,其后必须加冒号。把错误处理代码放置在过

5、程末端,这个过程在紧靠行号前方处具有Exit语句。如果没有出现错误,过程可避免执行错误处理代码。错误处理例程包含实际处理错误的代码,通常以Case或IfThenElse判定结构的形式出现。需要确定可能会发生什么错误并对每种错误提供操作方法。为了处理所有意想不到的错误,应使用Else或Case Else语句提供选项。Err对象的Number属性包含数值代码,代码代表最新的运行时错误。借助Err对象与Select Case或IfThenElse语句的组合,可对出现的任何错误采取针对性的操作。5退出错误处理例程设定错误捕获后,如果不是过程执行结束,或错误捕获失效,否则错误捕获始终是有效的。使用Res

6、ume语句可以指定应用程序在处理完错误后恢复正常执行的位置。语句On Error Resume Next可以使应用程序在执行时忽略错误。如果出现运行时错误,程序继续执行下一行。这种形式的On Error语句用于内联错误。6在指定行恢复执行Resume Next也可用于发生在循环内的错误,此时,需要重启动操作。还可使用Resume 行号,它把控件返回到指定的行号。7属性Err对象包含刚被引发的错误的信息,使用Err对象的属性和方法可以检查发生了什么错误,清除错误值、或引发一个错误。Number属性是一个整数,指示最新发生的错误。Description属性是一个字符串,含有对错误的描述。Sourc

7、e属性包含产生错误的应用程序的名称。在使用Automation时,这个属性会很有用。如果用户在访问Excel 2007时,Excel 2007产生了错误,Excel 2007会把Err. Number设置成正确的错误代码,把Err. Source设成Excel. Application。8方法Clear方法清除错误,它把Err. Number的值复置为零。这种方法主要用于处理内联错误。有时,用户可能不想设置错误处理程序,让应用程序在错误发生时跳转到这个程序,而是想在内联里处理某个错误。在程序中添加On Error Resume Next语句,在每个可能含有错误的语句后检测Err. Number

8、的值。用Err. Clear重置错误编号。处理内联错误的程序代码中不包含标号或Resume语句。使用On Error Resume Next时要特别小心,用户的错误处理程序可能会忽略用户没有意识到的错误。Raise方法引发一个错误。如果想避免复制错误捕获程序,可以用Raise方法把错误传回调用过程,或检测错误处理程序。Visual Basic有足够的号码对应自己的错误,且有富余。如果用户想生成并捕获自己的错误,可以使用32767以下的数字。9搜索调用列表一个事件过程调用过程A,过程A调用过程B,过程B调用过程C,当执行过程C时,其它过程挂起。如果过程C中出现错误,而且这个过程没有激活的错误处理

9、程序,则Visual Basic在调用列表中沿挂起的过程向后搜索,首先搜索过程B,过程A,然后是初始事件过程,并执行查找到的第一个激活的错误处理程序。如果在调用列表中的所有地方都没有遇到激活的错误处理程序,则显示默认的意外错误信息并终止执行。如果Visual Basic查找到一个激活的错误处理例程,执行会在这个例程中继续下去。如果在错误处理例程中执行Resume或Resume Next语句,执行也继续下去。如果错误处理程序的错误范围不包括实际产生的错误,则在具有激活的错误处理程序的过程内会产生意想不到的错误。这时过程可能会陷入死循环,特别是如果错误处理程序还执行Resume语句时,情况更是如此

10、。为防止这种情况出现,在程序内的Case Else语句中使用Err对象的Raise方法。这实际上是在错误处理程序内生成一条错误,从而迫使Visual Basic通过调用列表搜索能够处理错误的处理程序。10把错误分配到不同的处理程序通过调用列表后退搜索的效果很难预测,因为这要取决于在成功处理错误的处理程序中是否执行了Resume或Resume Next语句。Resume把控件返回到刚执行过的过程调用,而该过程包含错误处理程序。Resume Next则把控件返回到最近一次执行过的过程调用之后的任何语句之处,而且调用的过程包含错误处理程序。11复杂错误处理当用几个模块编写大型Visual Basic

11、应用程序时,错误处理代码可能相当复杂。调试代码时,对于在程序中没有代码处理具体错误的情况,应该在所有错误处理程序中使用Err对象的Raise方法重新生成错误。由此,应用程序就可按照调用列表,试着把其它错误处理例程中的错误加以改正。如果发生一个代码未处理的错误,则也要确保Visual Basic显示错误信息。在测试代码时,这一技术有助于发现难以处理的错误。但是,对于独立方式的可执行文件,应该切记:如果执行Raise方法,而且无任何其它过程捕获错误,则应用程序将立即中断执行,且没有任何Query Unload或Unload事件发生。在处理错误后,如果需要明确地清除Err对象,则可以用Clear方法

12、。当使用具有On Error Resume Next的联机错误处理时,这种做法是非常必要的。Visual Basic无论何时执行任何类型的Resume语句、Exit语句或者其它On Error语句,都可自动调用Clear方法。如果不希望另一个过程在调用列表中的捕获错误,则可用Stop语句强制终止代码。在开发环境中优化代码时,可以用Stop检查错误的上下文。编写一个故障保险的错误处理过程,所有错误处理程序都可调用它作为最后手段,解决不能处理的错误。故障保险的过程能够按卸载窗体和保存数据的顺序中断应用程序。12具有完备的错误处理程序的函数只要有可能,就应该把自己的代码编制成标准函数,使它包含完整的

13、错误处理程序。然后在程序中调用这个函数。函数应返回一个值,表明是否成功处理了发生的错误。13集中处理错误的程序通过创建错误处理主函数,可以把应用程序中那些主要的错误处理集中起来,并由这个主函数指示过程如何处理错误。然而,由于Resume语句只能使用在含有On Error语句的过程中,所以如果要求过程能处理错误,则过程中必须含有错误处理程序。在应用程序中添加错误处理代码时,很快就会发现有可能反复处理的是相同的错误,那么编写几个可供错误处理代码调用来处理公共错误情况的过程,就可减少代码的数量。14Visual Basic中的通用错误捕获选项Visual Basic开发环境下有三种通用错误捕获选项:发生错误时中断、在类模块内中断和遇到未处理的错误时中断。在【工具】菜单中单击【选项】,在【选项】对话框中单击【通用】选项卡,在【错误捕获】单选框中选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论