欢迎来到天天文库
浏览记录
ID:9932866
大小:141.50 KB
页数:29页
时间:2018-05-16
《visual basic的调试和错误处理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VisualBasic的调试和错误处理 作者:未知来源:MSDN热阅读4338人次,更新于2005-11-20【字体:小大】无论你怎样认真细致地编写代码,错误总会(可能会)发生。理论上讲,VisualBasic过程根本不需要错误处理代码。然而不幸的是,有时会出现错误删除文件、磁盘驱动器空间满或网络驱动器意外断开等情况,这就存在导致代码中发生运行时错误的可能性。为处理这些错误,需要在你编写的过程中添加错误处理代码。有时,错误还可能在代码内部发生;这种类型的错误通常被称作bug(错误)。小的错误会带来失败或不便。更严重的错误会造成应用程序对命令响应的中断,可能需要用户重新启动应用
2、程序并造成未保存的所有工作被丢失。对应用程序中的错误进行定位和更正的过程被称作调试。VisualBasic提供一些帮助分析应用程序运行的工具。这些调试工具对于错误源的定位尤其有用,同时你还可使用这些工具试着对你编写的程序进行修改或者学习其他应用程序的工作方式。本章对VisualBasic中调试工具的使用进行了说明,解释了运行时错误(在代码正在运行时发生的错误,它是在试图进行非法操作时产生的)的处理方法。注:本章中的信息适用于MicrosoftExcel97、Word97和PowerPoint97中的VisualBasic编辑器。有关MicrosoftAccess97中调试Vi
3、sualBasic代码和处理错误的信息,请参阅icrosoftAccess97和MicrosoftOffice97开发者版中的“建立Microsoft数Access97应用程序”。另外,“建立MicrosoftAccess97应用程序”的联机版本可从MicrosoftAccess97和MicrosoftOffice97专业版CD-ROM的ValuePack目录下找到。如何处理错误理论上讲,VisualBasic过程根本不需要错误处理。事实表明,硬件问题或用户的意外操作会导致运行时错误,从而停止代码的运行,并且用户通常无法恢复应用程序的运行。其他错误不会中断代码的运行,但会导致
4、代码不按预想运行。例如,下面程序中,若文件存在则返回真,若文件不存在则返回假,但程序中不包括错误处理代码。FunctionFileExists(filename)AsBooleanFileExists=(Dir(filename)<>"")EndFunctionDir函数返回第一个与指定文件名(有或没有通配符、驱动器名或路径)匹配的文件;如果未找到匹配文件,返回长度为零的字符串。这个代码包含Dir调用可能出现的任何结果。然而,如果变量指定的驱动器号是非法的驱动器,会出现错误“驱动器无效”。如果指定的驱动器是软盘驱动器,该函数仅在软盘驱动器中有盘和软驱门关上的情况下运行正常,否
5、则VisualBasic会出现“磁盘未准备好”的错误提示,并且停止代码的运行。例如,下面示例可解决诸如驱动器无效或软盘驱动器中无盘之类的驱动器问题。FunctionFileExists(filename)AsBooleanDimMsgAsString'打开错误陷井,这样错误处理程序可对检测到的任何错误作出响应。OnErrorGoToCheckErrorFileExists=(Dir(filename)<>"")'如果没有错误发生,不执行错误处理程序。ExitFunctionCheckError:'如果发生错误,转移至此。'定义代表VisualBasic内部错误代码的常量。Co
6、nstmnErrDiskNotReady=71,mnErrDeviceUnavailable=68'vbExclamation,vbOK,vbCancel,vbCritical,andvbOKCancel是'VBA类型库中定义的常量。If(Err.Number=MnErrDiskNotReady)ThenMsg="在软驱中插入软盘并关上软驱门。"'显示一个带有感叹号符和OK、Cancel按钮的消息框。IfMsgBox(Msg,vbExclamation&vbOKCancel)=vbOKThenResumeElseResumeNextEndIfElseIfErr.Number=
7、MnErrDeviceUnavailableThenMsg="该驱动器或路径中不存在:"&filenameMsgBoxMsg,vbExclamationResumeNextElseMsg="意外错误#"&Str(Err.Number)&"发生:"_&Err.Description'显示带有Stop(停止)符图标和OK按钮的消息框。MsgBoxMsg,vbCriticalStopEndIfResumeEndFunction在本示例代码中,Err对象的Number属性包含与发生的运行时错误相关的数字;Des
此文档下载收益归作者所有