




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程名称:.NET应用开发 第四章 C#高级技术4.1 调试与异常处理1.目标概述 2分钟22.回顾 5分钟23.课程知识点讲解23.1.错误的类型 10分钟23.2.调试过程 10分钟33.3.VS.NET中的调试工具 15分钟33.4.异常和异常处理 45分钟44.小结 3分钟75.考核点86.作业答案87.扩展练习88.学生问题汇总89.教学后记9本节目标n 本节中将讲述如下主要内容: 错误的类型 调试过程 VS.NET调试工具 异常和异常处理n 通过教学使学生掌握C#语言的错误和异常处理。本节重点n 错误的类型n 调试过程n VS.NET调试工具n 异常和异常处理 本节难点n 授课课时n 2课时 教法建议1. 目标概述 2分钟本节主要讲述C#语言的错误和异常处理。2. 回顾 5分钟回顾上一章的相关知识。3. 课程知识点讲解3.1. 错误的类型 10分钟引入:主题:对程序产生的错误进行分类:1语法错误语法错误是编码过程中遇到的最明显的一类错误。程序员在编写代码的过程中不遵循语言规则时,就会产生语法错误。2运行时错误当应用程序试图执行无法实施的操作时,就会产生运行时错误。此类错误发生在运行时。3逻辑错误逻辑错误是指不会直接指出的错误,语法可能是对的,程序也不会因为异常而终止,但代码或许不会显示所需的输出结果。语法错误运行时错误逻辑错误C#语句的语法错误、缺少括号、拼写错误、缺少语句等内存泄漏、以零作除数、安全异常计算公式写错、错误的算法在编译时确定在程序运行时确定在程序运行时确定易于确定和更正难以调试,因为此类错误仅在应用程序运行时出现难以调试,因为此类错误仅在应用程序运行时出现3.2. 调试过程 10分钟引入: 主题:许多程序员通常都试图通过调用输出函数(如Console.Write()等)来显示某种消息,以判断该点以前的代码是否正确执行,从而达到隔离问题的目的。这些函数还可以用来跟踪和显示程序内某个变量的值。这是一种有效的调试技术。使用调试器时,可以在代码中插入“断点”,以便在特定行处暂停执行。断点告知调试器,程序进入中断模式,处于暂停状态。在Visual Studio.NET中设置断点的步骤如下: 右击所需代码行,以设置断点,此时会弹出其快捷菜单,如图4.1.1所示。 选择“插入断点”,设置断点所在的代码行由代码旁的暗红色圆点指示,且整行均为高亮暗红色背景。要继续执行程序,可从菜单中选择“调试”“继续”(也可以按快捷键F5)。VS.NET中共有两种模式可用来生成应用程序:l 调试模式(Debug模式)l 发布模式(Release模式)3.3. VS.NET中的调试工具 15分钟引入: 主题:VS.NET调试器提供有多个窗口,用以监控程序执行。其中可在调试过程中使用的部分对话框包括:l “局部变量”窗口l “监视”窗口l “快速监视”窗口l “即时”窗口1“局部变量”窗口“局部变量”对话框显示局部变量中的值。它只列出当前作用域(即正在执行的方法)内的变量并跟踪它们的值。2“监视”窗口“监视”窗口用于计算变量和表达式的值,并通过程序跟踪它们的值,也可以编辑变量的值。3“快速监视”窗口“快速监视”窗口可用于快速计算变量或表达式的值。4“即时”窗口“命令”窗口的即时模式可用于检查变量的值、给变量赋值以及运行一行代码。Visual Studio.NET调试器的部分功能如下: 跨语言调试使用VB.NET、VC+.NET、VC#.NET、Managed Extensions for C+、脚本和跨SQL编写的应用程序。 调试Microsoft.NET框架公共语言运行库编写的应用程序以及Win32本机应用程序。 加入正在主机或远程机器上运行的程序。 通过在单个Visual Studio解决方案中启动多个程序,或加入已经在运行的其他程序来调试多个程序。3.4. 异常和异常处理 45分钟引入: 主题:异常是代码中产生的错误,或者在运行期间由代码调用的函数产生的错误。这里的“错误”定义比较含糊,因为异常可能是在函数等中手工产生。异常在命名空间中定义,大多数异常的名称清晰地说明了它们的用途。异常类继承关系的层次结构:Exception类是所有异常类的基类。出现错误时,系统或当前执行的应用程序通过引发包含有关该错误信息的异常来报告错误。引发异常后,应用程序或默认异常处理程序将处理异常。Exception类说 明SystemException这个类提供系统异常和应用程序异常之间的区别AugumentException当向方法提供的任意一个参数无效时,将引发此异常ArithmeticException此异常表示由算术运算导致的错误DataException如果在使用ADO.NET组件时生成错误,将引发此异常FormatException当参数的格式不符合被调用方法的参数规范时,将引发此异常IOException当出现I/O错误时,将引发此异常IndexOutOfException当试图使用数组边界外的索引来访问数组的元素时,将引发此异常ArgumentNullException在将空引用传递给无效参数的方法时,将引发此异常DivideByZeroException当试图用某个数字除以零时,将引发此异常OverflowException这个类表示当算术运算的结果过大而无法由目标类型表示时出现的错误ApplicationException这个类表示在执行应用程序的过程中检测到的应用程序定义的错误TargetException这个类表示当试图调用无效目标时引发的异常.NET Framework并不能预定义所有的程序异常,程序员可以建立自定义异常来扩展异常的种类。自定义异常可通过从System.ApplicationException类中继承来创建。用户程序引发ApplicationException,该类将异常所需的所有功能封装起来,并能充当为组件定制的自定义功能的基类。属 性说 明Message此属性显示描述错误状况的文本Source此属性显示导致异常发生的应用程序或对象的名称StackTrace此属性提供在堆栈上所调用方法的详细信息,并首先显示最近调用的方法InnerException对内部异常的引用,如果此异常基于前一个异常,则内部异常指最初发生的异常。异常可以嵌套。也就是说,当某个过程发生异常时,它可以将另一个异常嵌套到自己所引发的异常中,并将两个异常都传递给调用程序。InnerException属性提供对内部异常的访问。在C#程序中,引发异常共有以下两种方式:l 使用显式throw语句来引发异常。在此情况下,控制权将无条件转到处理异常的部分代码。l 语句或表达式在执行过程中激发了某个异常的条件,使得操作无法正常结束,从而引发异常。在异常未处理时,这个信息才会显示出来,应用程序也才会中断执行。1trycatchfinallyC#语言包含结构化异常处理(Structured Exception Handling,SEH)的语法。关键字可以标记出能处理异常的代码和指令,如果发生异常,就使用这些指令处理异常。用于这个目的的三个关键字是try、catch和finally。它们都有一个关联的代码块,必须在连续的代码行中使用。其基本结构如下:trycatch( e) Finally 这些代码块的用法如下:l try包含产生异常的代码;l catch包含产生异常时要执行的代码。catch块可以使用,设置为只响应特定的异常类型(例如System.IndexOutOfRangeException),以便提供多个catch块。还可以完全省略这个参数,让一般的catch块响应所有的异常。l finally包含总是会执行的代码,如果没有产生异常,则在try块之后执行,如果处理了异常,就在catch块后执行,或者在未处理的异常中断应用程序之前执行(此时处理这个块,其原因是存在这个块,否则也可以在这个块的后面放置代码)。在try块的代码出现异常后,发生的事件依次是:l try块在发生异常的地方中断程序的执行。l 如果有catch块,就检查该块是否匹配于已发生的异常类型。如果没有catch块,就执行finally块(如果有catch块,就一定要有finally块)。l 如果有catch块,但它与已发生的异常类型不匹配,就检查是否有其他catch块。l 如果有catch块匹配于已发生的异常类型,就执行它包含的代码,再执行finally块。l 如果catch块不匹配于已发生的异常类型,就执行finally块(如果有)。示例讲解示例4.1.1 以下代码多次要求用户键入一个数字,然后对这个数字进行某些处理。为了便于解释,处理操作仅是显示这个数字。但是,假定因某些原因,该数字必须在0和5之间(包括0和5),如果超出这个范围,程序就不能对该数字进行正确的处理。所以,如果用户键入大于5或小于0的数字,程序就抛出一个异常。程序会继续要求用户输入数字,直到没有输入任何内容,但按下了回车键为止。2异常处理的注意事项注意,必须在更一般的异常捕获之前为比较特殊的异常提供catch块。如果catch块的顺序错误,应用程序就会编译失败。还要注意,可以在catch块中产生异常,方法是使用ThrowException方法或Throw方法。这个表达式会再次产生catch块处理过的异常。如果以这种方法产生异常,该异常就不会由当前的trycatchfinally块处理,而是由上一级的代码处理(但嵌套结构中的finally块仍会执行)。练习练习4.1.1 C#语句的语法错误、缺少括号、拼写错误、缺少语句等属于_错误类型的示例。 “_”窗口用于监控当前程序中所有变量的值。 所有C#异常都派生自_类。 程序员可使用_语句以程序方式引发异常。4. 小结 3分钟本节主要介绍了以下内容:1错误分为:语法错误、运行时错误和逻辑错误。2调试是搜寻和消除应用程序中的错误的过程。3语法错误表示编译器无法理解代码。4调试模式可用来重复编译和排除应用程序中的错误,直至能够成功运行。5“局部变量”窗口允许用户监控当前程序中所有变量的值。6“监视”窗口用于计算变量和表达式的值,并通过程序跟踪它们的值,也可以编辑变量的值。7“快速监视”窗口可用于快速计算变量或表达式的值。通过此窗口还可以修改变量的值。8“命令”窗口的即时模式可用于检查变量的值、给变量赋值以及运行一行代码。9异常是代码中产生的错误,或者在运行期间由代码调用的函数产生的错误。10C#中所有异常都派生自Exception类。11C#语言使用trycatchfinally语句来处理异常。这三个关键字都有一个关联的代码块,必须在连续的代码行中使用。5. 考核点 考核点1:错误类型 考核点2:调试模式 考核点3:异常与异常处理6. 作业答案 1:创建一个控制台应用程序,可以计算用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论