第7章有错怎么办——错误处理•一个功能完善的应用程序应该预料到错误,并及时处理或提示用户。VisualBasic不仅提供了功能强大的程序设计环境,也提供了一个界面友好、简便实用的程序调试工具。学习本章,读者将了解错误类型、如何设计程序捕获错误和调试程序。7.1错误有哪些•错误在应用程序开发和运行过程中表现多样。错误通常包括语法错误、运行错误和逻辑错误3种。本节将分别介绍3种错误不同的表现形式和处理方法。7.1.1语法错误•语法错误是初学编程者最常见的错误。通常是输入不正确的代码,包括错误地输入关键字、遗忘了标点符号或引用不正确的数据结构。具有语法错误的程序不能正常运行,也不能编译成可执行文件。通常VisualBasic中包含“自动语法检测”选项,可以发现大部分语法错误并提示改正,如图7.1所示。图7.1语法错误提示•默认条件下,VisualBasic打开“自动语法检测”选项进行自动检测语法。如果发现了语法错误,自动加亮并显示该程序代码,并弹出一个提示框来解释错误原因和提供解决方法。设置或清除自动语法检测选项步骤如下:•(1)选择“工具”|“选项”命令,弹出“选项”对话框。•(2)选择“编辑器”选项卡,选择“自动语法检测”复选框,如图7.2所示。•(3)单击“确定”按钮,保存设置。图7.2自动语法检测7.1.2逻辑错误•如果代码没有语法错误可以运行,但是运行结果与设计时完全不同。这样的代码中必然存在逻辑错误,如语法错误(陷入死循环)、符号错误(加法改为减法)、数值范围错误(设计数值为1至100,运行时为1至99)等。程序逻辑错误是最不容易发现的严重错误。大部分逻辑错误可以归结为数据错误、流程控制错误。•以下为典型逻辑错误-死循环。•01DimnAsInteger'声明变量•02DimsAsInteger•03N=1•04Forn=1To3'for循环3次•05s=s+n'运算表达式•06n=1'导致了假死•07Nextn•说明:该程序将出现假死状态。因为n永远等于1或2。7.1.3运行错误•运行错误是在程序运行过程中发生的。有时语法没有错误,但VisualBasic中却无法运行程序。例如,除法运算中,除数为0;读取文件时,该文件不存在等。当出现运行错误时,VisualBasic会自动终止应用程序,并弹出错误信息提示,如图7.3所示。图7.3运行错误提示•通常情况下,运行错误是不可避免的。但是可以采用错误捕获的方式来处理。经验丰富的编程人员可以设计减少错误的出现。以下为减少错误的编程方法。•制定详细开发计划,综合考虑到可能发生的各种情况。•程序设计中,尽可能使程序结构化和模块化。•添加必要的注释,便于以后其他程序员阅读和改进。•良好的命名规范,减少名字错误。•设计阶段显式声明所有变量,避免变量名错误。•运行程序前,阅读代码过程减少错误发生。7.2遇到错误怎么办•优秀的应用程序应该具备较强的捕获和处理运行错误的能力。硬件问题或用户错误操作都将引发错误并终止应用程序。错误捕获功能可以拦截错误并进行处理,进而可以避免硬件问题或用户操作错误。本节将介绍错误捕获和处理方法。7.2.1捕获错误•在VisualBasic开发过程中,如果发生运行错误,则VisualBasic将终止程序运行,并提示错误信息。但当编译程序后,用户只会看到提示错误需要关闭程序的对话框。但功能完全的应用程序应当提示错误内容并提供处理方法。VisualBasic中提供了处理错误的函数和方法,允许应用程序对错误进行响应。•VisualBasic中使用OnError语句来进行错误捕获。当错误发生时,程序自动运行到处理错误的相关代码,予以解决错误或提示用户可能需要的帮助。标准代码如下:•OnErrorGoToline发生错误时,跳转到指定处理错误程序代码。•OnErrorResumeNext发生错误时,忽略错误行,继续执行下一语句。•OnErrorGoTo0发生错误时,不使用错误处理程序代码。•该语句启动一个错误处理程序并指定该子程序在一个过程中的位置;也可用来禁止一个错误处理程序。7.2.2处理错误•在理想程序中,VisualBasic过程根本不需要错误处理代码。但实际上硬件问题或用户操作都会造成运行时错误。这些错误会使代码终止,而且通常无法恢复应用程序的运行。其他错误也许不会中断代码,但是这些错误可能使代码产生...