- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Visual C# .NET程序设计 第七讲 异常处理 沈志忠 zzshen78@163.com 北京科技大学信息工程学院 第8章 异常处理 本章要点: ? 异常处理的基本概念 ? try…catch…finally结构 ? C#中的异常类 ? 用户自定义异常 8.1 循序渐进学理论 8.1.1 异常处理概念 【例8-1】 编写一个除法计算器,计算器的设计界面如图8-1所示。程序运行时,输入被除数和除数后按【计算】按钮将会把运算结果显示在【结果】后面的文本框中,如图8-2所示。要求程序能够识别出除数为零的错误并给出提示信息,如图8-3所示。 异常处理概览 C#中的异常处理机制也是一种面向对象的技术。异常本身就是一个对象,当程序在运行的过程中遇到异常条件时,就创建一个异常对象并被抛出(throw)。任何一个异常对象或者属于类System.Exception,或者属于它的子类。 图8-1 程序设计界面 图8-2 程序正常运行界面 图8-3 除数为零的情况 8.1.2 捕获处理异常 [格式]: try { 语句组1; //程序中需要执行的语句 } catch(异常1) //发生了“异常1”指定的异常 { 语句组2; //执行该异常处理 } …… catch(异常n) //发生了“异常n”指定的异常 { 语句组n; //执行该异常处理 } finally //必做的自理 { 语句组n+1; //该语句块一定被执行,无论是否产生异常 } try语句 将有可能发生异常的代码作为try语句块,处理try语句中出现的异常代码放到catch语句块。finally语句则是不管try语句中有没有异常发生最后都要执行其中的程序块。 catch块中包含的是出现异常时要执行的代码。一个try后面可以有零个以上的catch块。如果try块中没有异常,则catch块中代码不会被执行。catch后面括号放入希望捕获的异常,如DivideByZeroException异常。 两个catch语句的异常类有派生关系的时候,要将包括派生的异常类catch语句放到前面,包括基类的catch语句放置到后面。 finally块包含了一定要执行的代码,通常是一些资源释放,关闭文件等代码。 【例8-2】 对例8-1进行改造使之能够捕获到除数为零的异常(只对整数产生,对于实数结果为无穷大)、输入数据格式不正确的异常以及其它所有异常。图8-4~图8-6是发生了几种异常情况时的程序运行界面。 图8-4 除数为0异常 图8-5 不能转换为整型的异常 图8-6 其它异常 8.1.3 C#的异常类 在C#中,所有的异常都派生于Exception类,该类包含在公共语言运行库中。 以上介绍的都是程序在运行过程产生异常时,由.NET运行引擎自动抛出的异常。在C#中,我们还能够使用关键字throw,显式地抛出异常。 通过显式抛出异常,不仅可以帮助程序员方便地控制抛出的异常类型和消息,还能够在catch块中,再次抛出异常,从而使得异常处理机制更为灵活多变。 8.1.4 抛出和重发异常 异常的发生有两种可能:代码执行过程中满足了异常的条件而使程序无法正常运行下去;通过throw语句无条件抛出异常。第一种情况上面已经介绍过了。第二种情况则与第一种情况完全相反,通过throw语句主动在程序中抛出异常,抛出的异常要用catch语句捕获,否则程序运行将中断。 1.抛出异常 用户自己产生并抛出异常需要使用throw语句。 [格式1]:throw 功能:把接受到的异常直接发送出去,这个异常将传回到调用方法的代码中,一般在方法内的catch块中使用。 [格式2]:throw 异常对象 功能:抛出“异常对象”指定的异常。如果该语句在catch块中,将把异常发送到调用方法的代码中。 图8-7 除数为0时的程序运行界面 【例8-3】 在“除法计算器”中对输入的除数进行判断,如果除数为0则主动抛出“除数为零”的异常。除数为“0”时的程序运行界面如图8-7所示。 2.重发异常 当发生异常后,可以在catch语句中对异常进行捕获,然后进行处理,处理过程还可以通过throw语句把异常重发给调用者。 【例8-4】 用函数实现除法计算器的功能。如果发现除数为零,则把结果默认为整数的最大值。同时程序显示出“执行结果不可靠”的提示信息。程序的运行界面如图8-8所示。 图8-8 除数为0时的运行界面 【例8-5】 对例8-4进行改进,使主调方法中能够显示出在被调方法中发生的异常是何种异常,发生异常时的程
文档评论(0)