C#高级编程.第14章 错误和异常.docVIP

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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 中的所有其他异常类。 异常的类层次结构并不多见,因为其中的大多数类并没有给它们的基类添加任何功能。 但是在异常处理时,添加继承类的一般

文档评论(0)

mydoc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档