欢迎来到天天文库
浏览记录
ID:34202305
大小:61.62 KB
页数:12页
时间:2019-03-04
《C#C++C语言学会编程第13课异常处理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第13章异常处理异常是程序执行时遇到的任何错误情况或意外行为。应用程序必须能够统一处理在执行期间发生的错误。.NETFramework公共语言运行库提供了一个模型,以统一的方式通知程序发生的错误。本章将讲解C#语言中的异常处理机制,主要介绍以下知识点。�异常概述;try语句;System.Exception类;.NETFramework常用异常类;�创建自定义异常类。C#从入门到实践13.1异常概述和C++程序语言一样,C#程序语言也存在异常处理机制。C#程序语言中的异常用于处理系统级和应用程序级的错误状态,它是一种结构化的、统一
2、的和类型安全的处理机制。C#从入门到实践13.1.1导致异常的原因在应用程序运行时,发生异常的原因是多种多样的,如除数为0、堆栈溢出等。导致异常的原因可以归纳为以下2大类。�在执行语句和表达式(C#语言)的过程中,有时会出现一些例外情况,从而使得某些操作无法正常完成,此时就会引发一个异常。�应用程序使用throw语句特意产生一个异常,此时将引发一个异常。C#从入门到实践13.1.2try语句try语句可以用来捕捉在代码块的执行期间发生的各种异常。它可以包含try块、catch块和finally块,具体说明如下。�try块,一般包含
3、有可能发生异常的代码。�catch块,包含出现异常时需要执行的响应代码。�finally块,包含出现异常时一定执行的代码,如资源清理等操作。C#从入门到实践13.1.3异常处理异常是由try语句处理的。当发生异常时,系统将搜索与当前try块相关的最近的、可以处理该异常的catch块,然后由该catch块处理该异常。如果与当前try块相关的所有catch块都不能处理该异常,则沿着堆栈向上搜索封闭该异常代码的try块及其相关联的catch块,如果找到,则由该catch块处理该异常。如果还没有找到catch块,则重复上述过程,直到找到c
4、atch块。如果到达调用堆栈顶部仍然没有找到处理该异常的catch块,则由默认的异常处理程序处理该异常,然后应用程序终止。C#从入门到实践13.2System.Exception类System.Exception类表示在应用程序执行期间发生的错误,它是.NETFramework中所有异常的基类型。当系统或应用程序发生错误时,将通过引发包含错误信息的异常来报告错误。一旦异常发生后,将由该应用程序或默认异常处理程序(如System.Exception类)来处理异常。System.Exception类包含描述错误的可读文本。当异常发生时
5、,应用程序的运行库(如.NETFramework)将产生消息(保存在Exception类的实例的Message属性中)通知用户错误的性质并提供解决该问题的操作建议。Exception类包括以下两类异常。�从SystemException派生的预定义公共语言运行库异常类。从ApplicationException派生的用户定义的应用程序异常类。C#从入门到实践13.3常用异常类.NETFramework提供了10个常用异常类,如处理空(null)引用的System.NullReferenceException类、处理数组索引小于0或
6、超过其下标的System.IndexOutOfRangeException类等。这些常用异常类及其说明如表13.3所示。类描述System.NullReferenceException如果使用null引用,引发此异常。System.IndexOutOfRangeException如果使用小于零或超出数组界限的下标访问数组时,引发该异常。System.InvalidCastException如果显式转换失败时,就会引发此异常。System.DivideByZeroException当除数为0时,引发该异常。System.StackO
7、verflowException当堆栈溢出(如无限递归)时,引发该异常。System.OverflowException在checked上下文中的算术运算溢出时,引发该异常。System.OutOfMemoryException在通过new操作分配内存失败时,引发该异常。System.ArithmeticException在算术运算期间发生错误时,引发该异常。System.TypeInitializationException静态构造函数引发异常,且没有可以捕捉到它的catch子句时,引发该异常。System.ArrayTypeM
8、ismatchException如果被存储的元素的实际类型与数组的元素类型不兼容时,引发此异常。C#从入门到实践13.4实例一:自定义异常处理类本实例创建了一个自定义异常处理类,它的名称为CustomException,并直接继承于System.E
此文档下载收益归作者所有