在Visual Basic中处理错误

上传人:t****d 文档编号:242893235 上传时间:2024-09-11 格式:PPTX 页数:16 大小:157.15KB
返回 下载 相关 举报
在Visual Basic中处理错误_第1页
第1页 / 共16页
在Visual Basic中处理错误_第2页
第2页 / 共16页
在Visual Basic中处理错误_第3页
第3页 / 共16页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2014/12/18,#,处理错误,Eliminare errori,1,运行时错误,应用程序执行时出现的错误往往是由一些不可预见的动作引发的。这些错误都称为运行时错误。通过使用错误处理程序用户可以避免运行时错误,给用户提供有用信息,并正确地退出应用程序。,如果程序在,Visual Basic,开发环境中运行时出现运行时错误,会有消息告知:进入调试模式、寻求帮助或者选择结束应用程序。如果应用程序作为可执行文件执行时出现运行时错误,,Visual Basic,则显示一则错误消息,应用程序也就此结束。要避免运行时错误,可以编写错误处理程序,修正出错处,提示用户正确操作,或者在程序结束前保存数据。,2,错误处理介绍,错误处理程序是一个例程,它捕获应用程序中出现的错误,并对错误做出反应。如果预料到一个过程可能发生运行时错误,就应该在过程中添加错误处理程序。,在错误发生时,通过告知应用程序转向哪段程序可以设定或启用某个错误捕获。,Visual Basic,在执行,On Error,语句时会启用错误捕获。包含它的过程处于活动状态时,该错误捕获始终有效。在给定过程中一次只能启用一个错误捕获。另外,错误捕获必须放在本地过程中。不能用,On Error,语句把应用程序的执行引向另一个过程。如果要使错误捕获无效,可使用,On Error Go To,语句。,编写错误处理例程的第一步是添加一个行号,标志着错误处理程序的开始。行号的名称应是描述性的,后面必须跟一个冒号。常规错误处理程序放在过程结束处,紧跟着,Exit Sub,或,Exit Function,的行号之后。这样,在没有错误发生时,过程就不会执行错误处理程序。,使用,Resume,或,Resume Next,语句就可以退出错误处理例程。,Resume,语句会执行引发错误的那句代码,,Resume Next,语句执行引发错误代码的下一句代码。如果错误处理程序能够修正错误,则使用,Resume,语句,否则就使用,Resume Next,语句。,3,使错误捕获有效,借助于,On Error,语句,可以测试可捕获错误并对它做出响应。如果出现运行时错误,则可强制应用程序跳转到由,On Error Go To,语句指定的标记处。,当,Visual Basic,执行,On Error,语句时激活错误捕获,,On Error,语句指定错误处理程序。当包含错误捕获的过程是活动的时候,错误捕获始终是激活的,也就是说,直到这个过程执行,Exit,或,End,语句时,错误捕获才停止。,尽管在任一时刻,任一过程中只能激活一个错误捕获,但可建立几个供选择的错误捕获并在不同的时刻激活不同的错误捕获。借助于,On Error Go To 0,也能停用某一个错误捕获。为设置一个跳转到错误处理例程的错误捕获,可用,On Error Go To,行标签语句。,4,编写错误处理例程,编写错误处理例程的第一步是添加行号,标志着错误处理例程开始。行号应该有一个具有描述性的名称,其后必须加冒号。,把错误处理代码放置在过程末端,这个过程在紧靠行号前方处具有,Exit,语句。如果没有出现错误,过程可避免执行错误处理代码。,错误处理例程包含实际处理错误的代码,通常以,Case,或,IfThenElse,判定结构的形式出现。需要确定可能会发生什么错误并对每种错误提供操作方法。,为了处理所有意想不到的错误,应使用,Else,或,Case Else,语句提供选项。,Err,对象的,Number,属性包含数值代码,代码代表最新的运行时错误。借助,Err,对象与,Select Case,或,IfThenElse,语句的组合,可对出现的任何错误采取针对性的操作。,5,退出错误处理例程,设定错误捕获后,如果不是过程执行结束,或错误捕获失效,否则错误捕获始终是有效的。使用,Resume,语句可以指定应用程序在处理完错误后恢复正常执行的位置。,语句,On Error Resume Next,可以使应用程序在执行时忽略错误。如果出现运行时错误,程序继续执行下一行。这种形式的,On Error,语句用于内联错误。,6,在指定行恢复执行,Resume Next,也可用于发生在循环内的错误,此时,需要重启动操作。还可使用,Resume,行号,它把控件返回到指定的行号。,7,属性,Err,对象包含刚被引发的错误的信息,使用,Err,对象的属性和方法可以检查发生了什么错误,清除错误值、或引发一个错误。,Number,属性是一个整数,指示最新发生的错误。,Description,属性是一个字符串,含有对错误的描述。,Source,属性包含产生错误的应用程序的名称。在使用,Automation,时,这个属性会很有用。如果用户在访问,Excel 2007,时,,Excel,2007,产生了错误,,Excel 2007,会把,Err. Number,设置成正确的错误代码,把,Err. Source,设成,Excel. Application,。,8,方法,Clear,方法清除错误,它把,Err. Number,的值复置为零。这种方法主要用于处理内联错误。,有时,用户可能不想设置错误处理程序,让应用程序在错误发生时跳转到这个程序,而是想在内联里处理某个错误。,在程序中添加,On Error Resume Next,语句,在每个可能含有错误的语句后检测,Err. Number,的值。用,Err. Clear,重置错误编号。处理内联错误的程序代码中不包含标号或,Resume,语句。,使用,On Error,Resume Next,时要特别小心,用户的错误处理程序可能会忽略用户没有意识到的错误。,Raise,方法引发一个错误。如果想避免复制错误捕获程序,可以用,Raise,方法把错误传回调用过程,或检测错误处理程序。,Visual Basic,有足够的号码对应自己的错误,且有富余。如果用户想生成并捕获自己的错误,可以使用,32767,以下的数字。,9,搜索调用列表,一个事件过程调用过程,A,,过程,A,调用过程,B,,过程,B,调用过程,C,,当执行过程,C,时,其它过程挂起。,如果过程,C,中出现错误,而且这个过程没有激活的错误处理程序,则,Visual Basic,在调用列表中沿挂起的过程向后搜索,首先搜索过程,B,,过程,A,,然后是初始事件过程,并执行查找到的第一个激活的错误处理程序。如果在调用列表中的所有地方都没有遇到激活的错误处理程序,则显示默认的意外错误信息并终止执行。,如果,Visual Basic,查找到一个激活的错误处理例程,执行会在这个例程中继续下去。如果在错误处理例程中执行,Resume,或,Resume Next,语句,执行也继续下去。,如果错误处理程序的错误范围不包括实际产生的错误,则在具有激活的错误处理程序的过程内会产生意想不到的错误。这时过程可能会陷入死循环,特别是如果错误处理程序还执行,Resume,语句时,情况更是如此。为防止这种情况出现,在程序内的,Case Else,语句中使用,Err,对象的,Raise,方法。这实际上是在错误处理程序内生成一条错误,从而迫使,Visual Basic,通过调用列表搜索能够处理错误的处理程序。,10,把错误分配到不同的处理程序,通过调用列表后退搜索的效果很难预测,因为这要取决于在成功处理错误的处理程序中是否执行了,Resume,或,Resume Next,语句。,Resume,把控件返回到刚执行过的过程调用,而该过程包含错误处理程序。,Resume Next,则把控件返回到最近一次执行过的过程调用之后的任何语句之处,而且调用的过程包含错误处理程序。,11,复杂错误处理,当用几个模块编写大型,Visual Basic,应用程序时,错误处理代码可能相当复杂。,调试代码时,对于在程序中没有代码处理具体错误的情况,应该在所有错误处理程序中使用,Err,对象的,Raise,方法重新生成错误。由此,应用程序就可按照调用列表,试着把其它错误处理例程中的错误加以改正。如果发生一个代码未处理的错误,则也要确保,Visual Basic,显示错误信息。在测试代码时,这一技术有助于发现难以处理的错误。但是,对于独立方式的可执行文件,应该切记:如果执行,Raise,方法,而且无任何其它过程捕获错误,则应用程序将立即中断执行,且没有任何,Query Unload,或,Unload,事件发生。,在处理错误后,如果需要明确地清除,Err,对象,则可以用,Clear,方法。当使用具有,On Error Resume Next,的联机错误处理时,这种做法是非常必要的。,Visual Basic,无论何时执行任何类型的,Resume,语句、,Exit,语句或者其它,On Error,语句,都可自动调用,Clear,方法。,如果不希望另一个过程在调用列表中的捕获错误,则可用,Stop,语句强制终止代码。在开发环境中优化代码时,可以用,Stop,检查错误的上下文。,编写一个故障保险的错误处理过程,所有错误处理程序都可调用它作为最后手段,解决不能处理的错误。故障保险的过程能够按卸载窗体和保存数据的顺序中断应用程序。,12,具有完备的错误处理程序的函数,只要有可能,就应该把自己的代码编制成标准函数,使它包含完整的错误处理程序。然后在程序中调用这个函数。函数应返回一个值,表明是否成功处理了发生的错误。,13,集中处理错误的程序,通过创建错误处理主函数,可以把应用程序中那些主要的错误处理集中起来,并由这个主函数指示过程如何处理错误。然而,由于,Resume,语句只能使用在含有,On Error,语句的过程中,所以如果要求过程能处理错误,则过程中必须含有错误处理程序。,在应用程序中添加错误处理代码时,很快就会发现有可能反复处理的是相同的错误,那么编写几个可供错误处理代码调用来处理公共错误情况的过程,就可减少代码的数量。,14,Visual Basic,中的通用错误捕获选项,Visual Basic,开发环境下有三种通用错误捕获选项:发生错误时中断、在类模块内中断和遇到未处理的错误时中断。,在,【,工具,】,菜单中单击,【,选项,】,,在,【,选项,】,对话框中单击,【,通用,】,选项卡,在,【,错误捕获,】,单选框中选择要求的单选项,单击,【,确定,】,。,15,关闭错误处理,如果在过程中激活了错误捕获,则当过程执行完毕后,错误捕获会自动失效。但是,当过程里的代码一直在执行时,可能也会想要关闭过程中的错误捕获。要关闭激活的错误捕获,可用,On Error Go To 0,语句。一旦,Visual Basic,执行了这个语句,则在过程内检测错误而不捕获错误。在过程中到处都可用,On Error Go To 0,来关闭错误处理,甚至在错误处理例程自身内。,16,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!