下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualBasic程序设计时,不论程序员多么优秀和仔细,程序代码可能出Err12章程序错误的处理及调常见的程序错误类DimDlmDlmDlmintAAs 本想定义intAPrintPrint“第十二章 '本想输出”第十二章”,双引号错IfIfintA=999intA=1End少了对于以上出现类型语法错误,VisualBasic提供了“自动语法检测”功能来应对,即当用户输入完一行代码后,一旦光标移动到其他行,VisualBaisc会自动对输入完毕的程序行步项”框步12.1所示,单击【确定】按钮,完成自动语法检测功能的设置。12.212.312.4 图12.1选择“自动语法检测”复选 图12.2输入错误的关键图12.3输入错误的标点符 图 输入不完整的语PrivateSubForm_Load()DimmAsIntegerDimnAsIntegern=1Form=1To5n=n+1'缺少Next与For匹End所示的提 框没有变12.1】1+2+…+9DimDimintA,SumAsIntegerForintA=1To9Sum=Sun+intANextintAPrint其中“Sun”是“Sum运行时输出的Sum值为9,这显然本是本意,这是由于VisualBasic允许非变量的OptionOption或者在建立工程之前,在如图12.1所示的框中,选定【要求变量】复选框即可。此后若出现此类错误,则会弹出如图12.6所示的提示框。图 提示 图 提示运行错误是指在运行模式下产生的编译错误即代码执行了操作而引起的错误此类错误只能在运行程序时才能发现。如数据溢出、作的文件不存在和除数为零等。【例12.2】将除数为零为例来说明运行时错误现象,具体代码如下OptionOptionPrivateSubDimsAsDoubles=DIV(1,0)End1FunctionDIV(mAsDouble,nAsDouble)As DimResultAsDoubleResult=m/nDIV=End在运行该程序时,系统便会弹出框,提示出错信息,具体如图12.7所示图12.7提示【例12.36符串“66+”连接起来得到“666PrivatePrivateSubDimm,mm=n=DimkAsStringk=m+nLabel1.Caption=End'Label1误的根本原因是使用变量类型不当造成的即程序先将n转换为整型变量然后与m相加,得出的结果是72,然后再将72转换为字符串赋值给k,如果用户在变量申明时已经mnString,则这个逻辑错误便能避免。12.812.4】1*2*3*4*5*6*7*8*9*10OptionOptionPrivateSubForm_Load()DimintA,intBAsIntegerForintB=1To10intA=intA*intBNextintBPrint"intA=";End12.9AinA0m,BsntegerorrB=1To10之间添加一行代码:intAintA=12.10图12.9显示非预期的结 图12.10正确结12.11所示。图 “通用”选项并不会全面编译整个工程项目,而只是在某些过,才对这些过程进行编译。使译时,迫使对代码进行大量的纠错。如果用户在IDE中调试项目,则VsiualBasic常常必须以便进行全编译这样可以在编程的过程中能够定期纠正编译错误而不必纠正大量设计错误处理的步VisualBasicOnError语句来捕捉错误,OnOnErrorGoToLineLineLine可以是任何行或是行号;如果发生一个运行时错误则会跳到Line,激活错误处理程序。需要注OnOnErrorGoTOOnErrorGoTo'发生错误时,跳到从行号10开始的错误处理子程'发生错误时,跳到从Example开始的错误处理程OnErrorResumeOnErrorResumeNext语句。OnErrorGoTo说明:OnError语句,则任何运行时错误都是致命的;也就是说,结果会00OnError说明:OnError语句,则任何运行时错误都是致命的;也就是说,结果会SubSubOnErrorGoToExitSubEndFunctionFunction过程OnErrorGoToExitFunctionEnd在编写错误处理程序时还会常使用到Err对象,用户可以通过Err对象来获取错误的消息,当出现错误时,有关错误的信息会在Err对象中。下面详细介绍Err对象的相关知ErrErrOnError捕捉到错误后,ErrNumber显示对应错误编号,即Err对象的属性来确定产生错误的原因。ErrErrNumber、Description、Source、HelpFileHelpContext。Number属性的作用是用于返回或设置表示错误的代码,其语法格式如下: Err.Number[=错误代码 Long12.112.1代信代信35679DLLActiveX部件不能建立对象或返回对此DLLDLL连接至型态程序库或对象程序库的远代代信代信I/ODLL没有权路径/文件错VisualBasic不支持尚未设置对象变量或WithForNullFriendAutoRedrawDLL无效的类不能用这种类型的打印窗体图不能系统ActiveX不能将文件保存至ActiveXActiveX代信代信ActiveXDescription属性的作用是返回或设置一个与Err对象相关联的描述性字符串。DescriptionNumberVisualBasic运行时ErrorDescription属性。【例12.5】输入如下代码,运行程序时会弹出输出框,如图12.12所示,提示文件PrivateSubForm_Click()OnErrorGoToHandlerDimstrAAsStringstrA="TEST"Open"C:\Example.txt"ForInputAs#1Print#1,strAClose#1ExitIfErr.Number=53'C盘没有Example.txt文MsgBoxPrivateSubForm_Click()OnErrorGoToHandlerDimstrAAsStringstrA="TEST"Open"C:\Example.txt"ForInputAs#1Print#1,strAClose#1ExitIfErr.Number=53'C盘没有Example.txt文MsgBoxErr.Description,vbCritical,错误EndIfEndSub Err.Source[=字符串表达式 PrivatePrivateSubForm_DblClick()OnErrorGoToHandlerDimstrAAsStringOpen"C:\Example.txt"ForInputAs#1Input#1,strAClose#1ExitIfErr.Number=53MsgBoxErr.Description+vbCrLf+'C盘没有Example.txt文"错误产生于Err.Source,vbCritical,错误EndEndEndHelpFile属性的作用是返回或设置一个字符串表达式,即 Windows帮助文件的完整路径,默认为VisualBasic帮助文件。HelpContext属性的作用是返回或设置一个字符串表达式,即 Windows帮助文件中一个的上下文ID,前提是已指定HelpFile属性。ErrErr对象的常用方法主要有:ClearRaiseClearErrClear方法重新设置Err对象的属性需要注意的是执行以下语句时系统将自动调用ClearResumeOnErrorExitSubExitFunction12.14所示的提示框。PrivateSubForm_Click()DimResult(10)PrivateSubForm_Click()DimResult(10)AsIntegerDimiAsIntegerOnErrorResumeNextDoUntili=10Result(i)=Rnd*i*5000IfErr.Number<>0ThenMsgBoxErr.Description,vbCritical,错误Err.HelpFile,Err.HelpContexti=i+1EndIfEnd图12.12提示 图12.13提示 图12.14提示RaiseErr.RaiseErr.RaiseNumber,Source,Description,HelpFile,其中,NumberRaise时不指定某些参数,并ErrErr对象的属性值。RaiseRaiseError12.8】Number666错误,并将该错误产生出,弹出如图12.15所示的提示框
图12.15提示PrivatePrivateSubForm_Click()OnErrorGoToHandlerErr.Number=666Err.Description典型错误Err.Raise666ExitSubMsgBoxErr.Description,vbCritical,"ErrorCode#"&Err.NumberResumeEndErrErr的错误时,ErrResume对象的Raise方法等。VisualBasic提供的四种退出错误程序的方法介绍如下Resume[0]ResumeNext一次调用包含错误处理程序的过程的语句(OnErrorResumeNext语句),从紧随ResumeLineLineLine处恢复运行,Line参数是行或行号,必须和错误处理程序在同一个过程中。Err.RaiseNumber:=NumberErrRaise方法可以触发运行时错误,在错误处理程序中执行这一语句,VisualBaisc将会搜索另一个错误处理程程序错误处理的典型应【例12.9】“除数为零”的错误处理,执行错误处理程序后,重新返回执行原出错语(Resume语句来实现)PrivatePrivateSubForm_Click()DimA,B,CAsSingleOnErrorGoToCheckErrA=B=C=A/Print计算结果为:&CExitSubIferr.Number=11MsgBoxerr.Description,vbCritical,"错误"B=1 '修改B值 EndIfEndSubCAB语句时发生错误,进入错误处理程序,由于错误是由除数是0产生的弹出框如图12.16所示因此在错误处理程序修改B值用Resume12.17所示。图12.16提示 图12.17达式输出结【例12.10句nErrorResumet。PrivatePrivateSubForm_DblClick()DimA,B,CAsSingleOnErrorResumeA=B=C=C=A/Print计算结果为:&CExitSubEndCAB语句时发生错误,OnErrorResumeNextC值的初始值打印输出,打印输出效12.18所示。12.18一条语句(ResumeNext语句来实现)。PrivatePrivateSubForm_Click()DimA,B,CAsSingleOnErrorGoToCheckErrA=B=C=C=A/Print计算结果为:&CExitSubIferr.Number=11MsgBoxerr.Description,vbCritical,错误"ResumeNextEndEndCAB语句时发生错误,进入错误处理程序,由于错误是由除数是0产生的,弹出框,如图12.18所示,用ResumeNext语句返回执行出错语句的下一条语句,因此直接将C值的初始值打印输出,打印输出效果如图12.19所示,本例与ResumeNext语句能够实现提示错误信息功能。图12.19提示 图12.20输出信程序调试的工】】】】12.2112.21VisualBasic利用【调试】12.22所示。12.22调试12.2所示。12.2调试命令说目结束程序,相当于程序代码中的End在“代码”窗口中确定一行,VisualBasic执行应用程序代码的下一个可执行行,并到过程执行应用程序代码的下一个可执行行,但不到过程当处于中断模式时,呈现一个框来显示所有已被
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学数学暑期补习方案
- 人教版四年级下册英语教学计划
- 鸡眼病因介绍
- 债务如何转让协议书
- 关于就业协议
- 个人单位租车协议
- 1.2《风景谈》【中职专用】高一语文(高教版2023基础模块上册)
- (2024)年产吨锂电池负极材料石墨化项目可行性研究报告写作模板(一)
- 2022-2023学年天津一中高一(上)期末语文试卷
- 2023年天津市南开区高考语文一模试卷
- 最新部编版四年级语文上册期末专项复习(积累默写)
- 幼儿园绘本故事:《亲爱的雪人》 课件
- 一年级语文上册专项复习(口语交际、看图写话)课件
- 最新Unit-8-How-do-you-make-a-banana-milk-shake-全单元教案
- 机械制造有限公司组织架构图模板
- 加油站触电现场处置方案
- 承德建龙265m2烧结机工艺梳理
- 《现代汉语词汇》PPT课件(完整版)
- 红色校园文化建设研究报告(正式)
- 小学语文教师晋高级职称答辩题
- 门诊、住院业务流程和数据流
评论
0/150
提交评论