文档介绍:下载
第6章对错误的处理
即使程序员抱有最好的愿望,而且计划工作做得非常周密,也无法避免代码出现错误。这
些错误可能是编程员的错误(通常是由错误的假设造成的,比如分母决不能是 0),环境方面的
错误(比如想要保存的文件太大,磁盘上的空闲空间放不下),或者是时间上的错误(比如试
图给尚未完全加载的窗体设置焦点)。应该努力编写没有错误的代码,不过创建每个过程时也
应该假设它可能出现错误。这意味着每个过程必须包含错误处理程序。
实际上可能出现的程序错误的数量是很大的,但是它们基本上可以分为两种类型:一种是
编译错误,另一种是运行期错误。编译错误是指使得 Visual Bacsic的编译器无法对代码进行编
译的错误。如果一个过程中包含了编译错误, Visual Basic将不执行该过程,并且你也不能向用
户提供带有编译错误的运行期版本应用程序。大多数编译错误是句法错误造成的。
例如,如果你试图调用定义为下面这样的过程:
Public Sub MyProcedure(intMyVariable As Integer)
而定义该过程时使用了下面这个语句,那么就会产生一个编译错误,因为在 C a l l语句中增加了
参数:
Call MyProcedure(invVariable1, intVariable2)
运行期错误是在程序运行时产生的,并且通常是试图对变量执行无效操作而产生的结果。
例如,下面这个代码不会产生编译错误(如果 i n t M y Va r i a b l e是个已经说明的变量,那么它的句
法是正确的)。
Print 10 / intMyVariable
在大多数情况下,这个代码甚至不会产生运行期错误。但是,如果 i n t M y Va r i a b l e的值是0,
Visual Bacsic就会产生一个运行期错误而停止运行,因为 1 0不能被0除。如果在I D E中运行一个
项目时出现一个运行期错误,代码就会在出错的代码行上停止运行,并显示一条出错消息。在
已经编译的程序中,未经处理的错误是致命的,它会导致整个应用程序运行瘫痪。通过创建错
误处理程序,那么当出现运行期错误时,就能防止程序运行被中止。
Visual Basic的编译选项
Visual Basic有两个设置项会在很大程度上影响你创建非常坚实的代码的能力。一个设置项
是Compile On Demand(按需要进行编译),pile(后台编译)。
可以打开O p t i o n s对话框,选定G e n e r a l选项卡,然后对这两个设置项进行设置,如图 6-1所示。
pile On Demand时,如果单击工具栏上的R u n按钮,或者按F 5键,Visual Basic
并不全面编译你的项目。相反,只在引用过程时,才对这些过程进行编译。pile On
D e m a n d,通常可使比较大的项目或者速度较慢的计算机上的项目能够更快地启动运行,但是
它也会产生某些不被注意的编译错误。
注意如果按C t r l + F 5键,或者从R u n菜单中选择Start With pile (启动全面编
译),pile On Demand设置项,都会使项目得到全面编译。
第 6章对错误的处理计计61
下载
图6-1 pile On pile
两个选项会影响对错误进行编译的能力
在发现和纠正所有编译错误之前,不能将项目编译成. e x e或. d l l之类的可发布文件,因此,
选定⒉荒芄环⒉即斜嘁氪砦蟮拇搿5牵《后,
会导致编译错误随着时间的推移而不断增加,从而在最后试图进行全面编译时,迫使你对代码
进行大量的纠错。如果在I D E中调试项目,你会变得心烦意乱,因为常常必须停止
(不只是暂停)运行,以便进行纠错操作。这使得调试正在运行的项目时对大量编译错误的纠
正操作变得非常麻烦。如果你的计算机能够在合理的时间内全面编译项目,那么可以考虑关闭
R部梢允保持选定状态,但是要定期按C t r l + F 5键,以
便重新运行你的项目。这使你在编程时能够定期纠正编译错误,而不必一次性纠正大量的编译
错误。
pile On Demand时,也可以决定是否选定 pile选项。如果选定
pile,就可以在过程和模块被引用时对它们进行编译,不过 Visual Basic也使用
空闲时间对尚未引用的模块进行编译。随着时间的推移,项目就可以得到全面编译。使用
pile选项,可以更快地加载未经全面编译的项目,并使编译错误保持在最低水
平,因为你会随时关注未被引用的模块中的错误。同样,你应该知道纠正编译错误常常会