- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C#高级编程.第14章 错误和异常
第14章 错误和异常
错误的出现并不总是编写应用程序的人的原因,有时应用程序会因为终端用户的操作
而发生错误。无论如何,我们都应预测应用程序和代码中出现的错误。
.NET Framework 改进了处理错误的方式。C#处理错误的机制可以为每种错误提供定制
的处理,并把识别错误的代码与处理错误的代码分离开来。
本章的主要内容如下:
● 异常类
● 使用try-catch-finally 捕获异常
● 创建用户定义的异常
学习完本章后,您将很好地掌握C#应用程序中的高级异常处理技术。
14.1 错误和异常处理
无论编码技术有多好,程序都必须能处理可能出现的错误。例如,在一些复杂的处理
过程中,代码没有读取文件的许可,或者在发送网络请求时,网络可能会中断。在这种情
况下,方法只返回相应的错误代码通常是不够的—— 可能方法调用嵌套了15 级或者20 级,
此时,代码需要跳过所有的15 或20 级方法调用,才能完全退出任务,采取相应的措施。
C#语言提供了处理这种情形的绝佳工具,称为异常处理机制。
注意:
在 VB6 中,错误处理工具的功能非常有限,主要是On Error GoTo 语句。如果您有VB6
的背景知识,就会发现C#异常打开了程序中处理错误的全新世界的大门。另一方面,Java
和C++开发人员会比较熟悉异常的规则,因为这些语言处理错误的方式与C#相同。C++开
发人员会留意异常是因为C++可能会因此而降低性能,但在C#中就不是这样。在C#代码
中使用异常一般不影响性能。VB 2005 开发人员会发现,在C#中处理异常非常类似于在
VB 中使用异常(但语法不同)。
第Ⅰ部分 C# 语言
14.1.1 异常类
在 C#中,当出现某个异常错误条件时,就会创建一个异常对象。这个对象包含有助于
跟踪问题的信息。我们可以创建自己的异常类(详见后面的内容),但.NET 提供了许多预
定义的异常类。
异常基类
本节将快速总结.NET 基类库中可以使用的一些异常。Microsoft 在.NET 中定义了大量
的异常类,这里不可能提供详尽的列表。图13-1 所示的类结构图显示了其中的一些类,给
出了大致的模式。
图 13-1
这个图中的所有类都在System 命名空间中,但IOException 和派生于IOException 的
类除外,它们在System.IO 命名空间中,这个命名空间处理文件数据的读写。一般情况下,
异常没有特定的命名空间,异常类应放在生成异常的类所在的命名空间中,因此与IO 相
关的异常就在System.IO 命名空间中。许多基类命名空间中都有异常类。
对于.NET 类来说,一般的异常类System.Exception 派生于System.Object,通常不在代
码中抛出这个System.Exception 对象,因为它无法确定错误情况的本质。
在该层次结构中有两个重要的类,它们派生于System.Exception:
● System.SystemException——通常由.NET 运行库生成,或者有着非常一般的本质、
可以由几乎所有的应用程序生成。例如,如果.NET 运行库检测到堆栈已满,就会
342
第13 章错误和异常
抛出 StackOverflowException。另一方面,如果检测到调用方法时参数不正确,可
以在自己的代码中选择抛出ArgumentException 或其子类。System.SystemException
的子类包括表示致命错误和非致命错误的异常。
● System.ApplicationException——这个类非常重要,因为它是第三方定义的异常基
类。如果自己定义的异常覆盖了应用程序独有的错误情况,就应使它们直接或间
接派生于System.ApplicationException。
其他可能用到的异常类包括:
● StackOverflowException——如果分配给堆栈的内存区域已满,就会抛出这个异
常。如果一个方法连续地递归调用它自己,就可能发生堆栈溢出。这一般是一个
致命错误,因为它禁止应用程序执行除了中断以外的其他任务。在这种情况下,
甚至也不可能执行finally 块,通常用户自己不能处理像这样的错误,而应退出应
用程序。
● EndOfStreamException——这个异常通常是因为读到文件末尾而抛出的。第35 章
将解释流,流表示数据源之间的数据流。
● OverflowException——如果要在checked 环境下把包含值–40 的int 类型数据转换
为uint 数据,就会抛出这个异常。
我们不打算讨论图13-1 中的所有其他异常类。
异常的类层次结构并不多见,因为其中的大多数类并没有给它们的基类添加任何功能。
但是在异常处理时,添加继承类的一般
您可能关注的文档
最近下载
- 慢性阻塞性肺病伴有急性下呼吸道感染护理查房.pptx VIP
- 2025年广东省东莞市中考物理模拟试卷.pdf VIP
- 企业组织机构框图 .docx VIP
- 300T汽车吊性能说明书-XCA300_1全地面起重机技术规格书+[主臂风电臂加超起].pdf VIP
- 食品安全总监职责、食品安全员守则.pdf VIP
- 电力电子Buck电路课程设计实验报告.docx VIP
- 2025年第二批陕西延长石油集团所属单位内部遴选及选聘81人笔试参考题库附带答案详解.docx
- 7.1《风景谈》 课件 (共34张PPT)2024-2025学年统编版高中语文选择性必修下册.pptx VIP
- 工程售后人员配备方案.docx VIP
- 《体重管理》课件.ppt VIP
文档评论(0)