版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章 有错怎么办错误处理一个功能完善的应用程序应该预料到错误,并及时处理或提示用户。Visual Basic不仅提供了功能强大的程序设计环境,也提供了一个界面友好、简便实用的程序调试工具。学习本章,读者将了解错误类型、如何设计程序捕获错误和调试程序。 7.1 错误有哪些错误在应用程序开发和运行过程中表现多样。错误通常包括语法错误、运行错误和逻辑错误3种。本节将分别介绍3种错误不同的表现形式和处理方法。7.1.1 语法错误语法错误是初学编程者最常见的错误。通常是输入不正确的代码,包括错误地输入关键字、遗忘了标点符号或引用不正确的数据结构。具有语法错误的程序不能正常运行,也不能编译成可执行文件。
2、通常Visual Basic中包含“自动语法检测”选项,可以发现大部分语法错误并提示改正,如图7.1所示。图7.1 语法错误提示默认条件下,Visual Basic打开“自动语法检测”选项进行自动检测语法。如果发现了语法错误,自动加亮并显示该程序代码,并弹出一个提示框来解释错误原因和提供解决方法。设置或清除自动语法检测选项步骤如下:(1)选择“工具”|“选项”命令,弹出“选项”对话框。(2)选择“编辑器”选项卡,选择“自动语法检测”复选框,如图7.2所示。(3)单击“确定”按钮,保存设置。图7.2 自动语法检测7.1.2 逻辑错误如果代码没有语法错误可以运行,但是运行结果与设计时完全不同。这样
3、的代码中必然存在逻辑错误,如语法错误(陷入死循环)、符号错误(加法改为减法)、数值范围错误(设计数值为1至100,运行时为1至99)等。程序逻辑错误是最不容易发现的严重错误。大部分逻辑错误可以归结为数据错误、流程控制错误。以下为典型逻辑错误-死循环。01Dim n As Integer声明变量02Dim s As Integer03N=104For n = 1 To 3for循环3次05 s = s + n运算表达式06n = 1导致了假死07Next n说明:该程序将出现假死状态。因为n永远等于1或2。7.1.3 运行错误运行错误是在程序运行过程中发生的。有时语法没有错误,但Visual B
4、asic中却无法运行程序。例如,除法运算中,除数为0;读取文件时,该文件不存在等。当出现运行错误时,Visual Basic会自动终止应用程序,并弹出错误信息提示,如图7.3所示。图7.3 运行错误提示通常情况下,运行错误是不可避免的。但是可以采用错误捕获的方式来处理。经验丰富的编程人员可以设计减少错误的出现。以下为减少错误的编程方法。制定详细开发计划,综合考虑到可能发生的各种情况。程序设计中,尽可能使程序结构化和模块化。添加必要的注释,便于以后其他程序员阅读和改进。良好的命名规范,减少名字错误。设计阶段显式声明所有变量,避免变量名错误。运行程序前,阅读代码过程减少错误发生。7.2 遇到错误怎
5、么办优秀的应用程序应该具备较强的捕获和处理运行错误的能力。硬件问题或用户错误操作都将引发错误并终止应用程序。错误捕获功能可以拦截错误并进行处理,进而可以避免硬件问题或用户操作错误。本节将介绍错误捕获和处理方法。7.2.1 捕获错误在Visual Basic开发过程中,如果发生运行错误,则Visual Basic将终止程序运行,并提示错误信息。但当编译程序后,用户只会看到提示错误需要关闭程序的对话框。但功能完全的应用程序应当提示错误内容并提供处理方法。Visual Basic中提供了处理错误的函数和方法,允许应用程序对错误进行响应。Visual Basic中使用On Error语句来进行错误捕获
6、。当错误发生时,程序自动运行到处理错误的相关代码,予以解决错误或提示用户可能需要的帮助。标准代码如下:On Error GoTo line发生错误时,跳转到指定处理错误程序代码。On Error Resume Next发生错误时,忽略错误行,继续执行下一语句。On Error GoTo 0发生错误时,不使用错误处理程序代码。该语句启动一个错误处理程序并指定该子程序在一个过程中的位置;也可用来禁止一个错误处理程序。7.2.2 处理错误在理想程序中,Visual Basic过程根本不需要错误处理代码。但实际上硬件问题或用户操作都会造成运行时错误。这些错误会使代码终止,而且通常无法恢复应用程序的运行
7、。其他错误也许不会中断代码,但是这些错误可能使代码产生意想不到的操作。在没有错误捕获和处理的程序中,只能选择终止程序。但是优秀的应用程序应该按以下方式处理错误。(1)当错误发生时,提示用户出错并退出子过程,程序有限的功能继续运行。(2)跳过错误语句,继续执行下一句。(3)继续尝试纠正错误并重新运行该语句。【示例7-1】程序处理文件不存在错误。代码如下所示。01Function () As Boolean定义函数02 = (Dir() )Dir()函数返回文件03End Function说明:Dir()函数返回与指定的文件名相匹配的第一个文件。如果相匹配的文件不存在,则Dir()函数返回零长度字
8、符串。如果指定文件存在,则该过程返回true,否则返回false,但该过程不包含错误处理代码。当程序运行时,如果参数中指定的驱动器号是无效驱动器,则产生“装置不可用”的错误。如果指定驱动器是软盘驱动器,则只有在驱动器内有磁盘且驱动器门关闭时,Dir()函数才能正确工作。否则,Visual Basic显示“磁盘未准备”的错误并终止代码的执行。为避免这种情况,在Visual Basic中可用错误处理功能中断错误并执行正确操作。当错误发生时,Visual Basic将使用错误对象Err的各种属性,如错误号、描述等,以便应用程序可智能化地对错误状况作出响应。【示例7-2】 处理无效驱动器或空软盘驱动器
9、。(1)新建一个工程,并新建一个窗体。(2)双击工具箱中的CommandButton图标,窗体中自动增加一个CommandButton控件,默认Caption属性为Command1。(3)双击Command1按钮,弹出代码编辑窗口,选择Command1_click事件。输入以下代码:在代码中,Err对象的Number属性包含错误号,与运行时错误相关联。Err对象的Description属性包含错误的简短描述。当Visual Basic生成“磁盘未准备”的错误时,代码显示一段信息,通知用户选择两个按钮之一“确定”或”取消”。如果选择“确定”按钮,则Resume语句将控件返回到出错的语句处,并重新
10、执行该语句。如果错误已得到改正,则操作获得成功;否则程序返回到错误处理程序。如果选择“取消”按钮,则Resume Next语句将控件返回到出错语句(此时为Exit Function语句)之后的语句。即使出现“装置不可用”的错误,代码也显示对问题进行描述的信息。于是,由于使用Resume Next语句,函数将在出错语句之后的语句处继续执行。如果出现意想不到的错误,则将显示一段简短描述错误的说明,并在Stop语句处终止代码。7.3 调 试 程 序Visual Basic集成开发环境可以分为3种模式:设计模式、执行模式、中断模式。设计模式下可以进行程序的界面设计和代码编写。执行模式运行程序,可以查阅
11、代码,不允许更改程序。中断模式下程序处于挂起状态,可以阅读和修改代码并进行调试程序。本节介绍如何在Visual Basic开发过程中处于中断模式下调试程序。7.3.1 单步调试进入中断模式后,Visual Basic中可以单步调试或跳过整个过程。单步调试包括3种调试方法。逐语句:单步调试当前过程和调用过程中代码。快捷键为F8。逐过程:单步调试当前过程中的代码,不调试程序中其他代码。快捷键为Shift+F8。跳出:一直运行到当前过程的结束。快捷键为Ctrl+Shift+F8。以上3种方法在“调试”工具栏中有相应图标,如图7.4所示。在单步调试时,按键F8每次运行一行语句。在代码编辑窗口中自动高亮
12、显示下一行,如图7.5所示。图7.4 “调试”工具栏图7.5 单步调试如果希望跳过语句,或继续运行,将光标置于希望运行的语句上,可以选择“调试”|“设置下一条语句”命令或按下快捷键Ctrl+F9。程序将继续执行到指定语句。当程序运行大量重复时,调试程序将是一件非常繁琐的历程。设置断点将极大减轻调试工作量。设置时在欲设置断点代码处按下F9键或在代码行左侧单击出现红色圆点即可。程序运行到断点处自动停止执行,该行红色高亮显示。【示例7-3】 演示如何调试循环语句。(1)新建一个工程,并新建一个窗体。(2)双击工具箱中的CommandButton图标,窗体添加一个CommandButton控件,默认C
13、aption属性为Command1。(3)双击Command1按钮,弹出代码编辑窗口,并输入如下代码。(4)单击调试工具栏中“逐语句”选项或按下F8键开始运行程序进行单步调试。程序代码自动高亮显示。(5)在n=n+1代码左侧设置断点。将光标置于该行,按下F9键设置断点,如图7.6所示。图7.6 单步调试(6)按下F5键开始运行程序,自动运行到断点并高亮显示。按Ctrl+Break快捷键终止程序。7.3.2 立即窗体Visual Basic在开发中断点模式还提供了“立即”窗体显示运行结果。“立即”窗体允许中断模式下输入代码立即执行和显示运行结果。要显示“立即”窗体,要保证在中断模式下,单击“视图
14、”|“立即窗体”命令或按键Ctrl+G。【示例7-4】是中断条件下“立即”窗体调试程序代码。在“立即”窗体中输入代码如下所示:n=1234Print ns=1235+456Print s说明:1234和1691为最后运行结果。立即窗体支持给变量赋值和手工调试函数过程。7.3.3 监视窗体在Visual Basic开发过程中,需要时刻观察运行时程序变量值。当程序处于中断模式下,可以将鼠标指向代码窗体的变量悬停,将自动提示该变量值。如果为多个变量还可以通过监视窗体方法来观察变量值。添加监视窗体有以下两种方法。第一种方法:选择“调试”|“添加监视”命令,弹出“添加监视”对话框。第二种方法:右击变量或表达式,选择“快速监视”命令或按下Shift+F9键,弹出“添加监视”对话框,如图7.7所示。图7.7 添加监视【示例7-5】 演示监视Myarray数组所有值。(1)新建一个工程,并新建一个窗体。(2)双击工具箱中的CommandButton图标,窗体添加一个CommandButton控件,默认Caption属性为Command1。双击Command1按钮,弹出代码编辑窗口,输入如下代码。(3)右击Myarray代码,在弹出的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届安徽省庐巢七校联盟学业水平模拟考试数学试题仿真模拟试题B卷含解析
- 云南省绿春县一中2026年高三下学期第二次月考试卷生物试题含解析
- 消防救援队伍请销假制度
- 流域生态环境保护督察制度
- 法治审核三项制度
- 水表首次强制检定制度
- 2026湖北广济药业股份有限公司招聘2人备考题库及答案详解参考
- 2026江西事业单位联考省直招聘1346人备考题库带答案详解(培优a卷)
- 2026湘咨集团发布一季度劳务人员招聘48人备考题库带答案详解ab卷
- 2026福建泉州经济技术开发区第二实验幼儿园合同教师招聘1人备考题库附参考答案详解(突破训练)
- 2026年亳州职业技术学院单招职业适应性测试题库带答案解析
- 河南省高速公路建设项目电力设施迁改工程费用标准2025
- 2025至2030全球及中国妊娠和生育测试行业调研及市场前景预测评估报告
- 2026年湖南科技职业学院单招职业适应性测试题库含答案详解
- 2025年福建省中考数学真题卷含答案解析
- 陕西省西安市西安铁一中学2026届中考二模语文试题含解析
- 行测5000题电子版2025
- SL-M6000火灾报警掌握器〔联动型〕调试手册
- 系统解剖学-动脉课件
- 民族与社会第八讲族群集团在人口方面的差异课件
- 体检中心内部装饰风格设计
评论
0/150
提交评论