- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 结构化异常处理
窗内网,免费看视频,轻松学编程 第7章 结构化的异常处理 程序员在编写程序时,不仅要关心程序应达到的目的,也应该考虑到可能发生的各类不可预期的事件。例如,用户错误的输入、内存不够、磁盘出错、网络资源不可用或者数据库无法使用等等。通常这些问题的解决方法是在程序中使用异常进行处理。C#为处理程序执行期间可能出现的异常情况提供了内置支持,这些异常将由正常控制流之外的代码处理。C#中由try、throw、catch和finally关键字实现异常处理,而且提供了一个处理系统级和应用程序级错误状态的结构化的、统一的和类型安全的方法。此外,除了C#中提供的异常类型,C#还支持自定义的异常类型。 掌握如何抛出和捕获异常 掌握内部异常类 理解如何抛出预定义异常 掌握System.Exception类的成员 掌握如何创建和使用用户自定义的异常类 异常是程序执行时遇到的任何错误情况或意外行为。例如,代码或调用的代码(共享库)中的错误,操作系统资源不可用,通用语言运行时遇到意外情况(无法验证代码)等。 C#的异常由try语句处理,发生异常时系统将搜索可以处理该异常最近的catch子句,而这由异常运行时的类型来确定。 运行时使用基于异常对象和受保护代码块的异常处理模型。发生异常时,创建一个Exception对象来表示该异常。 7.1 结构化异常处理的基本知识 NET Framework提供了大量处理异常的预定义基类对象。将可能引发异常的代码段放在try块中,而将处理异常的代码放在catch块中。catch块是一系列以关键字catch开头的语句,语句后跟异常类型和要执行的操作。finally块包含代码清理资源或执行要在try块或catch块末尾执行的其他操作。无论是否产生异常,都会执行finally块,因为finally块包含了应总是执行的清理代码。finally块是可选的。如果不需要清理代码,就不需要包含此块。 7.1.1 抛出和捕获异常 抛出和捕获异常是由try/catch块来完成的,它是C#异常处理的主要机制。try/catch块的基本语法如下所示: try { //有可能产生异常的代码 } catch(Exception e) { //对异常进行处理的代码 } finally { //最终将执行的代码 } 7.1.1 抛出和捕获异常 在上述基本语法中,catch块可以指定要捕捉的异常类型。这个类型称为“异常筛选器”,它必须是Exception类型,或者必须从此类型派生。应用程序定义的异常应当从ApplicationException派生。另外,具有不同异常筛选器的多个catch块可以串联在一起。多个catch块的计算顺序是从顶部到底部,但是,对于所引发的每个异常,都只执行一个catch块。也就是与所引发异常的准确类型或其基类最为匹配的第一个catch块将被执行。如果在try块中程序流检测一个错误,程序流执行完相应的catch块后会执行finally块。如果没有任何异常仍会执行finally块。 7.1.1 抛出和捕获异常 如果检测到一个错误,代码就执行一定的操作,称为“抛出一个异常”。换句话说,它实例化一个异常对象,并抛出这个异常。代码如下所示: throw new IndexOutOfRangeException (); 7.1.1 抛出和捕获异常 在C#中,当出现某个异常错误条件时,就会创建一个异常对象。这个对象包含有助于跟踪问题的信息。在.NET框架中,异常是从Exception类继承的对象。异常从发生问题的代码区域引发,然后沿堆栈向上传递,直到应用程序处理它或程序终止。Microsoft在.NET Framework中提供了大量的异常类。下图7-1所示的类结构图显示了其中的一些类,给出了大致的模式。 7.2 异常类 图7-1 异常基类结构图 7.2 异常类 这个图中的所有类都在System命名空间中,但IOException和派生于IOException的类除外,它们在System.IO命名空间中,这个命名空间处理文件数据的读写。一般情况下,异常没有特定的命名空间,异常类应放在生成异常的类所在的命名空间中,因此与IO相关的异常就在System.IO命名空间中。许多基类命名空间中都有异常类。 7.2 异常类 在C#中,发生异常时,异常沿堆栈向上传递,每个catch块都有机会处理它,catch语句的顺序很重要。将针对特定异常的catch块放在常规异常catch块的前面,否则编译器可能会发出错误。确定正
您可能关注的文档
最近下载
- 机械测量培训课程.pptx
- 医疗器械安全有效基本要求清单填写参考模板2024年.docx
- 人教版(2024)数学一年级下册四 100以内的口算加、减法 练习.pptx
- 电气装置安装工程质量检验及评定规程DLT5161 2018.doc
- 做好客舱清洁前准备课件讲解.pptx
- 铁道信号论文-信号机维护与故障处理.doc
- ISO13485质量手册+全套程序文件.docx VIP
- 汽车机械维修工(高级技师)职业鉴定考试题库资料(高频300题).pdf
- 多维视角下梧州市普通高中体育生学训现状剖析与发展路径探索.docx
- 江南事业编招聘考试题历年公共基础知识真题汇总-综合应用能力(2010-2021.pdf VIP
文档评论(0)