C#程序设计 第12章 异常处理

上传人:E**** 文档编号:89384177 上传时间:2019-05-24 格式:PPT 页数:23 大小:377.50KB
返回 下载 相关 举报
C#程序设计 第12章 异常处理_第1页
第1页 / 共23页
C#程序设计 第12章 异常处理_第2页
第2页 / 共23页
C#程序设计 第12章 异常处理_第3页
第3页 / 共23页
C#程序设计 第12章 异常处理_第4页
第4页 / 共23页
C#程序设计 第12章 异常处理_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《C#程序设计 第12章 异常处理》由会员分享,可在线阅读,更多相关《C#程序设计 第12章 异常处理(23页珍藏版)》请在金锄头文库上搜索。

1、第12章 异常处理,第12章 异常处理,学习目标 掌握异常的定义和处理。 熟悉自定义异常的定义。,第12章 异常处理,12.1 异常 【课堂案例12-1】执行下面的程序将出现异常,请用异常处理机制修改程序。,Class ArrayOutOfIndex public void calculateSum() int sum = 0; int count ; int number = new int51,2,3,4,5; for(count=1;count=5;count+) sum+=numbercount; Console.WriteLine(“The sum of the array is :

2、0”,sum); Class Program static void Main(string args) ArrayOutOfIndex obj = new ArrayOutOfIndex(); obj.calculateSum(); ,第12章 异常处理,课堂案例12-1运行时出现的异常,第12章 异常处理,【案例学习目标】 掌握异常的概念。 掌握异常的处理机制。 【案例知识要点】异常的概念与处理机制。 【案例完成步骤】 (1)初步认识异常。 (2)使用异常的处理机制。 (3)修改应用程序。,第12章 异常处理,12.1.1 初步认识异常 下面通过一段简单代码来认识异常。 class Pro

3、gram static void Main(string args) int a,b,c; a=2; b=0; c=a/b; 按Ctrl+F5组合键执行上述程序时,会弹出一个对话框,提示程序在执行过程中碰到问题,出现的对话框如下图所示:,第12章 异常处理,出现上述情况是因为程序遇到了异常,产生的异常类为System.DivideByZeroException,出现异常的原因是因为除数为0。 异常是程序在执行期间发生的错误情况。当程序发生异常时,系统就会抛出一个错误。 异常类是对异常的分类。它们是由System.Exception类派生出来的,关于异常类的层次结构如下图所示:,第12章 异常处

4、理,System.ApplicationException和System.SystemException是System.Exception的直接子类,System.ApplicationException类是用户类型异常,如果用户想在程序中定义自己的异常,将要定义从该异常类继承的异常。System.SystemException是所有预定义系统异常的基类。一些派生自System.SystemException类的常用基类如下表所示:,第12章 异常处理,程序错误的分类 根据错误出现的阶段,通常可以将程序错误分为如下三种:编译时错误、结果错误和运行时错误。 (1)编译时错误:这种错误是发生在程序

5、编写过程中,是指程序语法编写上出现的错误。 (2)结果错误:结果错误指的是程序本身没有语法上的错误(即无编译错误),在程序运行期间也没有出现类似上图的错误提示。但程序执行后得到的结果并不正确。这是由于程序设计思路上存在的缺陷,是程序算法在实现功能时出现的逻辑上的问题。 (3)运行时错误:是指编译已通过,运行时发生的错误。运行时错误时由于与用户交互或对外设或网络的访问等可变情况,程序设计时考虑欠周全而导致的。,第12章 异常处理,12.1.2 异常的处理机制 在C#中是通过try、catch和finally块来实现异常处理的。 1. try程序块 用户需要将可能导致异常的语句放入try程序块中。

6、try程序块的使用方法如下: try /可能导致异常的语句 try程序块管理放入其中的语句,并定义相关的异常处理程序的范围。换句话说,如果异常发生在try程序块内,与try程序块相关的异常处理程序将处理该异常。ty程序块必须紧跟至少一个catch程序块。,第12章 异常处理,2. catch程序块 通过在try程序块后紧跟一个或多个catch处理程序可以将异常处理程序和try程序块关联起来。下列代码框架说明了catch程序块的使用。 try /可能导致异常的语句 catch() /异常处理代码 catch语句将异常类的对象作为参数。如果异常发生了,就执行catch程序块中的语句。catch程序

7、块的处理范围仅限于先前try程序块中的相关语句。,第12章 异常处理,3. finally程序块 finally用于执行不论异常是否被抛出都会被执行的一个语句块。例如,在实现文件操作的过程中不管有没有异常,文件必须被关闭,文件被关闭的操作可放置在finally块中。 try /可能导致异常的语句 catch() /异常处理代码 finally /最后的执行代码 finally程序块跟在catch程序块后面。对于一个异常处理程序,只能有一个finally程序块。但是,并不是一定要使用finally程序块。,第12章 异常处理,对于课堂案例12-1,要处理程序运行过程中出现的System.OutO

8、fMemoryException异常,需要使用trycatch程序块。处理代码如下: try /捕获异常 for(count=1;count=5;count+) sum += numbercount; Console.WriteLine(“The sum of the array is :0”,sum); catch(IndexOutOfRangeException e) Console.WriteLine(e.Message); ,说明: (1)在trycatch结构中,catch语句块可以有多个,读者可以根据情况而定,但至少要有一个catch语句块。 (2)catch语句,按异常类型从深层

9、派生异常类型到异常基类型(从特殊到一般)的顺序排列。若颠倒顺序则 参数为异常基类类型的catch语句将截获所有try语句抛出的异常对象。 (3)在C#中处理异常时,当不能明确系统异常时,可以直接使用System.Exception类。,第12章 异常处理,12.1.3 修改应用程序 对课堂案例12-1的错误程序进行异常处理后的完整代码如下:,Class ArrayOutOfIndex public void calculateSum() int sum=0; int count; int number =new int5 1,2,3,4,5; try /捕获异常 for(count=1;cou

10、nt=5;count+) sum += numbercount; Console.WriteLine(“The sum of the array is : 0”,sum); catch(IndexOutOfRangeException e) Console.WriteLine(e.Message); Class Program static void Main(string args) ArrayOutOfIndex obj = new ArrayOutOfIndex(); obj.calculateSum(); ,第12章 异常处理,课堂实践12-1 修改下面的程序,使程序能够正常结束。,u

11、sing System; class ExceptionExam public static void Main() int nums1 = 22,23,24,25,26; int nums2 = 2,0,4,0; for(int i=0;inums1.Length;i+) Console.WriteLine(nums1i/nums2); ,第12章 异常处理,12.2 自定义异常 【课堂案例12-2】阅读下面的程序,识别用到的异常并预测程序的输出结果。,/定义用户自定义异常 Public class CountIsZeroException:ApplicationException publ

12、ic CountIsZeroException (string message):base(message) Public class Calculate int sum; int count; int average; public int Sum get return sum; set sum=value; public int Count get return count; set count =value; public void doAverage() if(0=count) throw(new CountIsZeroException(“除数是0”); else average=s

13、um/count; ,第12章 异常处理,Class Program static void Main(string args) Calculate obj = new Calculate(); try obj.Sum=0; obj.Count=0; obj.doAverage(); catch(CountIsZeroException e) Console.WriteLine(“CountIsZeroException:0”,e.Message); ,第12章 异常处理,【案例学习目标】 掌握自定义异常的使用。 【案例知识要点】自定义异常。 【案例完成步骤】 (1)初步认识用户自定义异常。

14、(2)预测程序的输出结果。,第12章 异常处理,12.2.1 初次认识用户自定义异常类 1.定义用户自定义异常 .NET框架为程序人员提供了大量的预定义异常类,一些常见错误引发的异常都能被预定义的异常类捕捉。然后,在实际的程序设计过程中,编程人员可能需要根据程序运行的具体情况,人为地创建自己的异常类来处理某些特殊状况,这种类型的异常称为自定义异常。自定义异常类派生自ApplicationException类。 要创建用户自定义的异常,必须首先声明它,声明的格式为: class 自定义异常名:ApplicationException ,第12章 异常处理,例如:声明一个自定义异常MyExcept

15、ion: Class MyException:ApplicationException /自定义异常通常继承 ApplicationException异常类 public MyException() : base() public MyException(string e) : base(e) public MyException(string e,Exception inner) : base(e,inner) ,第12章 异常处理,2.抛出异常 在完成自定义异常类定义的基础上,我们需要进一步明确在程序运行到何处时,适时地抛出异常对象。在C#中使用throw关键字实现抛出异常的处理机制,称为“自定义异常处理机制”。具体的使用格式如下: throw 表达式; 例如,抛出上面定义的MyException异常: throw (new CountIsZeroException(“除数是”); /使用throw抛出异常 3.用户自定义异常的处理 用户自定义异常类定义完成后,用户可以在catch语句块中实现自定义异常的处理方法。 例如,对创建的MyException的处理方法如下: catch(MyException) Console.WriteLine(“This is My Exception”):,第1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号