程序调试与异常处理.ppt
2023/11/16,1,电子科大成都学院精品课程Visual C#.Net程序设计,Visual C#.Net程序设计,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,2,第九章 程序调试与异常处理,9.1 程序错误9.2 程序的异常处理,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,3,9.1 程序错误,一、程序错误分类 二、调试错误的三种方法,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,4,一、程序错误分类,1.语法错误它是最容易被发现和解决的一类错误,是指在程序设计过程中,出现不符合C#语法规则的程序代码。这类错误在代码编写期间,VS编辑器都能够自动指出,并会用波浪线在错误代码的下方标记出来。,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,5,2.运行时错误 是指在应用程序试图执行系统无法执行的操作时产生的错误,即我们通常所说的系统报错。这类错误编译器是无法自动检查出来,通常需要我们对输入的代码进行手动检查并更正。3.逻辑错误 常常是由于人为因素,如推理和设计算法本身的错误造成的。这类错误是最不易发现,同时也是最难解决的。这类错误编译器是无法检查,只有通过开发人员仔细认真的态度和不懈努力才能解决。,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,6,二、调试错误的三种方法,1.调试菜单及工具栏,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,7,2.单步执行,每执行一行代码,程序就暂停执行,直到再次执行。这样可以通过查看各变量、对象等的值来判断该行代码是否出错。F10和F11F10:只执行调用函数的代码,不会执行函数本身的代码。F11:可查看函数本身代码是否出错跳出:退出函数体 演示:实例,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,8,3.设置断点,断点,是一种信号,通知调试器应该在某处中断应用程序并暂停执行。该方法可以让程序一直执行,直到遇到断点,然后开始调试。这大大加快调试过程。设置方法一:单击右键设置方法二:单击当前行设置方法三:按F9键,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,9,4.人工寻找逻辑错误,添加注释:注释掉可能出错的代码行添加语句或控件:适当地添加输出语句或类似标签的控件,可获取更多辅助信息。示例:见教材,返回,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,10,9.2 程序的异常处理,一、异常处理概念二、Try-Catch语句三、Finally语句四、Throw语句,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,11,一、异常处理概念,异常指影响程序正常执行的事件。如内存不够、磁盘出错、用户非法输入等。异常处理是指对异常事件的处理方法,它是一种处理机制。异常出现后若得以妥善处理,则不会导致程序终止执行。,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,12,异常具有以下特点:各种类型的异常最终都是由 System.Exception 派生而来。在可能引发异常的语句周围使用 try 块。一旦 try 块中发生异常,控制流将跳转到第一个关联的异常处理程序(无论该处理程序存在于调用堆栈中的什么位置)。在 C#中,catch 关键字用于定义异常处理程序。如果给定异常没有异常处理程序,则程序将停止执行,并显示一条错误消息。除非您可以处理某个异常并使应用程序处于已知状态,否则请不要捕捉该异常。如果捕捉 System.Exception,请在 catch 块的末尾使用 throw 关键字再次引发该异常。,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,13,异常具有以下特点:如果 catch 块定义了一个异常变量,则可以用它获取有关所发生异常类型的更多信息。程序可以使用 throw 关键字显式地引发异常。异常对象包含有关错误的详细信息,比如调用堆栈的状态以及有关错误的文本说明。即使发生异常也会执行 finally 块中的代码。使用 finally 块释放资源,例如,关闭在 try 块中打开的任何流或文件。,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,14,二、Try-Catch语法格式,Try/可能引发异常的代码块;Cacth 异常对象/捕获异常类对象/如果上面代码发生异常则可在此编写相应的异常处理代码,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,15,公共语言运行库预定义的系统异常类。,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,16,三、Finally语句,有些特殊的事件,如文件的关闭、类对象的析构等,不论是否捕捉到异常,都必须执行的一段代码。该代码行就用Finally括起来。常构成Try-Catch-Finally搭配。示例,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,17,四、hrow语句,Throw语句用于手动地抛出一个异常。即程序员而不是系统告诉CLR什么时候发生异常及发生什么样的异常。语法格式:Throw异常对象,返回,2023/11/16,电子科大成都学院精品课程Visual C#.Net程序设计,18,本章要点,C#程序错误可分为三类:语法错误、运行时错误、逻辑错误。Visual Studio 提供了强大的调试器,本章主要介绍了三种常用的调试方法:单步调试、设置断点调试、人工手动调试异常处理指针对程序中的异常事件处理方法。Tty-Catch-Finally异常处理语句的使用。,