欢迎来到天天文库
浏览记录
ID:50040816
大小:425.50 KB
页数:19页
时间:2020-03-08
《C#应用程序设计教程 教学课件 作者 耿肇英 赵建利 耿燚 第4章程序调试与异常处理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章程序调试与异常处理优秀的程序员能在最短的时间内定位错误的位置,从而提高编程效率,这就要需要掌握正确的程序调试和异常处理方法。4.1错误分类程序错误主要分为3类,包括语法错误、逻辑错误和异常。本小节介绍这3种错误。4.1.1语法错误这类错误主要是指由于在代码中使用不正确的语法造成的错误,比如表达式书写有误、调用了未定义的方法等,VS2005编辑器会在书写代码时使用红色波浪线标出错误代码,编译后在集成开发环境下面的错误列表窗口列出所有错误,双击错误条目就可以定位到出现错误的位置。错误的代码下面用蓝色的波浪线标识
2、出来,当把光标放在蓝色波浪线上,会弹出提示出现错误原因的提示框,如下图所示。4.1.2逻辑错误程序编译成功,说明没有语法错误,运行后如果得不到所期望的结果,这说明程序存在逻辑错误。例如运算符使用不正确、语句次序不对、循环语句的结束条件不正确等,也可能是算法有问题。编译器不能捕捉或显示这类错误,需要仔细地阅读分析程序、通过调试器来帮助分析错误位置,分析产生错误的原因。4.1.3异常在编写程序时,不仅要关心程序的正常操作,还应该考虑到程序运行时可能发生的各类不可预期的情况,比如用户输入错误、内存不够、磁盘出错、网络资
3、源不可用、数据库无法使用等,所有这些错误被称作异常,不能因为这些异常使程序运行产生问题。C#语言采用异常处理语句来解决这类异常问题。4.2程序调试源程序经过编译后没有发现语法错误,才能成为可执行文件,但是执行后可能并不能实现所需功能,这是由于存在逻辑错误,必须通过正确的调试方法才能发现逻辑错误。一般情况下,首先要分析某一逻辑错误发生的大概位置,在可能产生错误位置的前面代码处设置断点,运行程序后,当执行到断点后程序停止运行,采用逐语句执行方法,一次执行一条语句,并分析执行这条语句后的运行结果,直到找到逻辑错误。本节
4、主要介绍在VS2005环境下进行程序调试的主要方法。4.2.1调试命令1.启动想要调试程序,就必须先启动调试器。可单击VS2005主菜单"调试
5、启动"菜单项(F5键)。启动后,程序要么正常结束,要么会执行到断点或出现异常处停止。2.停止要想结束调试,可以单击VS2005主菜单"调试
6、停止调试"菜单项(shift+F5键)。3.设置断点在代码窗口中选择怀疑存在问题的地方设置断点。方法是在要设置断点的代码处单击鼠标右键,在弹出的快捷菜单中选择“插入断点”。在编辑窗口的左边会出现一个红圆点。如下图所示。当程序运行到断点
7、处会自动停下来(黄色箭头所指),此时用户可将鼠标放到关心的变量处,编译器会弹出提示栏,指出该变量的当前值,如下下图所示。4.逐语句进入调试状态后,单击VS2005主菜单"调试
8、逐语句"菜单项(F11键),可以单步执行代码,一次执行一行。当遇到函数调用时,会跟踪到函数内部单步执行。5.逐过程进入调试状态后,单击VS2005主菜单"调试
9、逐过程"菜单项(F10键),可以单步执行代码,一次执行一行。当遇到函数调用时,不会进入到函数内部,直接执行调用函数,然后在函数调用的下一条语句单步执行。6.跳出单击VS2005主菜单
10、"调试
11、跳出"菜单项(Shift+F11键),从函数内部跳出。一般情况下在怀疑有问题的代码处设置断点,然后结合逐语句、逐过程、跳出命令来定位错误。7.调试窗口通过选择VS2005主菜单"调试
12、窗口"菜单项列出的不同窗口,可打开相应"调试"窗口(图4.4所示),便于用户跟踪、观察程序运行过程中各局部变量的取值情况、系统堆栈的使用情况等。4.3异常处理一种程序语言一般都要提供一种捕获和处理异常的机制,C#的异常处理功能非常强大,所以异常都被定义为异常类,属于命名空间System.Exception或它的一个子类。本节
13、通过被零除异常介绍C#语言处理异常的方法。4.3.1异常处理概述【例4.1】如果一个数被零除,将产生异常,程序将停止执行。usingSystem;classTest{staticvoidMain(string[]args){intx,y,z;x=5;y=0;z=x/y;Console.WriteLine("z={0}.",z);}}程序运行后将在Z=X/Y语句处停止运行,VS2005运行界面如图4.5所示。图4.5指出该程序在运行过程中出现了一个被零除的错误,这种在运行阶段发生的错误通常称之为异常。为保证程序安全
14、运行,程序中需要对可能出现的异常进行相应的处理。C#中当代码出现如零作除数、内存空间分配失败等错误时,系统就会自动创建异常对象,它们大多数是C#异常类的实例。System.Exception是异常类的基类,一般不直接使用,因为它不能反应具体的异常信息。有关异常类型请参阅.NETSDK文档。4.3.2try、catch和finally块C#通常使用try语句来捕获和处理程序
此文档下载收益归作者所有