- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电子科大成都学院精品课程《Visual C# .Net程序设计》 Visual C# .Net程序设计 电子科大成都学院计算机系 课件制作:罗福强 E-Mail: 第九章 程序调试与异常处理 9.1 程序错误 9.2 程序的异常处理 9.1 程序错误 一、程序错误分类 二、调试错误的三种方法 一、程序错误分类 1. 语法错误 它是最容易被发现和解决的一类错误,是指在程序设计过程中,出现不符合C#语法规则的程序代码。 这类错误在代码编写期间,VS编辑器都能够自动指出,并会用波浪线在错误代码的下方标记出来。 2. 运行期错误 是指在应用程序试图执行系统无法执行的操作时产生的错误,即我们通常所说的系统报错。 这类错误编译器是无法自动检查出来,通常需要我们对输入的代码进行手动检查并更正。 3. 逻辑错误 常常是由于人为因素,如推理和设计算法本身的错误造成的。这类错误是最不易发现,同时也是最难解决的 。 这类错误编译器是无法检查,只有通过开发人员仔细认真的态度和不懈努力才能解决。 二、调试错误的三种方法 1. 调试菜单及工具栏 2.单步执行 每执行一行代码,程序就暂停执行,直到再次执行。这样可以通过查看各变量、对象等的值来判断该行代码是否出错。 F10和F11 F10:只执行调用函数的代码,不会执行函数本身的代码。 F11:可查看函数本身代码是否出错 跳出:退出函数体 演示:实例9-4(见教材) 3.设置断点 断点,是一种信号,通知调试器应该在某处中断应用程序并暂停执行。 该方法可以让程序一直执行,直到遇到断点,然后开始调试。这大大加快调试过程。 设置方法一: 单击右键 设置方法二: 单击当前行 设置方法三: 按F9键 4.人工寻找逻辑错误 添加注释:注释掉可能出错的代码行 添加语句或控件:适当地添加输出语句或类似标签的控件,可获取更多辅助信息。 示例:见教材 9.2 程序的异常处理 一、异常处理概念 二、Try-Catch语句 三、Finally语句 四、Throw语句 一、异常处理概念 异常指影响程序正常执行的事件 。如内存 不够、磁盘出错、用户非法输入等。 异常处理是指对异常事件的处理方法。它是 一种处理机制,可以防止程序产生非正常状态 示例9-9(见教材) 二、Try-Catch语法格式 Try { // 可能引发异常的代码块; } Cacth [异常对象] // 捕获异常类对象 { // 如果上面代码发生异常则可在此编写相应的异常处理代码 } 公共语言运行库预定义的系统异常类。 一个简单的用户自定义异常 实例 9-10 代码阅读(见教材) 操作演示 代码分析 三、Finally语句 有些特殊的事件,如文件的关闭、类对象的析构等,不论是否捕捉到异常,都必须执行的一段代码。该代码行就用Finally括起来。 常构成Try-Catch-Finally搭配。 示例9-11(见教材) 四、Throw语句 Throw语句用于手动地抛出一个异常。即程序员而不是系统告诉CLR什么时候发生异常及发生什么样的异常。 语法格式:Throw[异常对象] 本章要点 C#程序错误可分为三类:语法错误、运行期错误、逻辑错误。 Visual Studio 提供了强大的调试器,本章主要介绍了三种常用的调试方法:单步调试、设置断点调试、人工手动调试 异常处理指针对程序中的异常事件处理方法。 Tty-Catch-Finally异常处理语句的使用。 作业 1. 书面作业(见本章教材) 2. 上机实验(见本章教材) Class Over Thank you! * * 启动调试 全部中断 停止调试 逐语句 逐过程 跳出 断点 返回 在选中的上下文所执行操作导致溢出时引发的异常 OverFlowException 没有足够的内存继续执行应用程序时引发的异常 OutOfMemoryExcepiton 尝试取消引用空对象时引发的异常 NullReferenceException 当调用的方法不受支持时引发的异常 NotSupportedException 因无效类型转换或显示转换引发的异常 InvalidCastException 试图访问索引超出数组界限的数值时引发的异常 IndexOutofRangeException 试图非法访问类中私有字段或受保护字段时引发的异常 FieldAccessException 试图用零除整数值或十进制数值时引发的异常 DivideByZeroException 因算术运算、类型转换或转换操作时引发的异常 ArithmeticException 发生非致命应用程序错误时引发的异常 ApplicationException 在试图读写受保护内存时引发的异常
文档评论(0)