《C#学习第8章异常处理.ppt》由会员分享,可在线阅读,更多相关《C#学习第8章异常处理.ppt(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第8章 异常处理我们编写程序的时候,总是希望程序按照自己的意愿工作,但是总可能发生意外,有些意外在编写代码的时候是检查不到的,更有些意外是因为软件所处的环境改变所致。为了提前预防意外的发生,C#提出了异常处理机制,非常聪明地处理这些事情。本章主要涉及到的知识点有:了解什么是异常,以及C#的异常处理机制。C#常用的异常。用try、catch和finally关键字捕获异常。用throw关键字抛出异常。自定义异常。8.1 为什么要异常处理在开发过程中,我们可以通过程序调试和代码走查来修改程序代码错误。但是程序在运行过程中,往往会遇到一些运行时错误。异常是面向对象编程中用于处理程序错误的有效机制。C#
2、语言本身提供了很好的异常处理机制,充分体现了语言的健壮性。8.1.1 程序的异常【本节示例参考:源代码chapter88.1.1ExceptionExample】我们公司在7楼,下班以后,和同事一起出门,当时电梯还没有到,同事要求走楼梯,我坚持坐电梯,因为一般情况坐电梯都比走楼梯快,但是等坐上电梯以后,电梯出了故障,等我下楼以后,同事早已经在下面等着我了。这是生活中的一个异常。那么,程序中的异常又是怎样的呢?首先,来看一个例子。程序员输入如下的代码逻辑,希望得到输出的结果。int val=10;/定义变量ifor(int i=5;i 0;i-)val=i/val;/改变变量值 Console.
3、WriteLine(val=0,val);8.1.2 处理C#中的异常【本节示例参考:源代码chapter88.1.2ExceptionExample】和同事下楼以后,同事幸灾乐祸的地说我坐电梯没他走楼梯快。我说是啊,如果我知道电梯要坏的话,就跟他走楼梯了。可是我之前根本无法知道电梯会坏。生活中经常发生这种不可预测的意外。程序中也一样,总可能发生异常。异常是在程序运行过程中发生的,如图8.2演示了异常处理流程。8.2 捕获异常C#语言提供了异常处理的语法支持,C#通过关键字try、catch和finally来执行异常处理。同时可以通过关键字throw抛出异常,让程序上一级或者系统本身来处理抛出
4、的异常。理解了异常处理,只是应用异常的第一步,下面的工作就是捕获异常,并对异常进行处理。同时,读者还可以根据自己的需要自定义异常。8.2.1 trycatchfinally语句【本节示例参考:源代码chapter88.2.1ExceptionExample】继续以坐电梯和走楼梯的故事为例,走楼梯是一种非常保险的方式,不需要考虑有意外的发生;坐电梯就有可能遇到电梯发生故障,但是坐电梯要快一些。所以这样考虑这件事情:我试图坐电梯,如果遇到故障,就按警报!按照编程的逻辑重新组织一下语言,如下所示:试图 坐电梯遇到(故障)按警报最终 到了楼下8.2.2 抛出异常【本节示例参考:源代码chapter88
5、.2.2ExceptionExample】前面演示了如何使用trycatchfinally语句捕获程序异常,这种异常通常只在代码出现错误的时候发生。其实,还可以在代码中显示的抛出异常,方法是使用关键字throw。下面我们编写一个程序,代码如下:8.2.3 自定义异常【本节示例参考:源代码chapter88.2.3ExceptionExample】合理地编写自定义异常类有助于更精确的捕获异常,而不是笼统地认为所有的异常都归结于.NET Framework中定义的Exception类或其已经定义好了的类型。8.3 小结本章讲解了异常处理,大家通过对本章的学习,能够充分地了解.NET Framewo
6、rk的异常处理机制,使用.NET Framework自带的异常类处理程序,也可以自定义异常类处理程序。通过本章,读者学习了以下内容:(1)异常是程序运行时错误,发生异常时,程序将意外终止,并将控制权返回给操作系统。(2)C#常用的异常处理类派生自System.Exception基类。(3)C#用try、catch和finally关键字捕获异常。用throw关键字抛出异常。本章习题一、选择题1下列关于trycatchfinaly语句的说明中,不正确的是()Acatch块可以有多个Bfinaly块是可选的Ccatch块也是可选的D可以只有try块2为了能够在程序中捕获所有的异常,在catch语句的括号中使用的类名为()AExceptionBDivideByZeroExceptionCFormatExceptionD以上三个均可3关于异常,下列的说法中不正确的是()A用户可以根据需要抛出异常B在被调用方法可通过throw语句把异常传回给调用方法C用户可以自己定义异常D在C#中有的异常不能被捕获二、简答题简述为什么要进行异常捕获。