第八章_异常处理(全) (2).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第八章_异常处理(全) (2).ppt》由会员分享,可在线阅读,更多相关《第八章_异常处理(全) (2).ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章第八章 异常处理异常处理李帅什么是异常处理异常用户自定义异常2内容提要内容提要异常是在程序执行期间发生的错误情况。封装了程序反常事件信息的对象。3描述异常描述异常在程序中发生的三种非正常现象。它们是:异常:运行时发生的错误缺陷(bug):是程序的错误,虽然缺陷会产生异常,但不能靠异常来处理缺陷,所有的缺陷都应该修正(运行时)错误(error):是用户行为所致,如输入错误。错误会导致异常,但我们应该用验证捕捉错误,防止错误的发生。错误应该能够预见到,并有防范措施(编译时)4错误的类型错误的类型5class MyErrorsConsole.WriteLine(“语法错误语法错误”)Conso
2、le.WriteLine 语句缺少分号语句缺少分号错误错误(error)6class Errorsint Num1=10;int Num2=2;int Num3;Num3=Num2/Num1;Console.WriteLine(“The Result is 0”,Num3);期望结果期望结果=5 设计时为设计时为Num1/Num2当前结果当前结果=0缺陷(缺陷(Bug)7class Errorsint Num1=0;int Num2=20;int Num3;Num3=Num2/Num1;Console.WriteLine(“The Result is 0”,Num3);发生了除以零的情况发生了
3、除以零的情况异常异常异常异常帐户姓名 余额300123张三张三300124王五王五47,000311320李四李四8网上银行网上银行张三转帐25000到李四的帐面上020,000数据库系统将查询发送到数据库中系统将查询发送到数据库中tranfer_money()sendquery();.余额 20000-25000 程序崩溃程序崩溃拒绝交易拒绝交易异常异常 系统出现故障系统出现故障“C#”中的异常 异常类异常类许多异常类都直接或间接的派生自System.Exception类System.ApplicationException 类System.SystemException 类9C#中,所有的
4、异常都派生于Exception类,它包含在公共语言运行库中。Exception类有一些值得注意的属性:Message:是一个只读属性,可以包含一个异常原因的描述。InnerException:是一个只读属性,它包含这个异常的“内部异常”。如果它不是null,就指出当前的异常是作为对另外一个异常的回答而被抛出。产生当前异常的异常可以在InnerException属性中得到。这些属性的数值可以在System.Exception构造函数中指定。C#中常用的通用异常类见下表10异常类异常类11异常类异常类说明说明System.OutOfMemoryExceptionSystem.OutOfMemory
5、ExceptionSystem.OutOfMemoryExceptionSystem.OutOfMemoryException当试图通过当试图通过newnew来分配内存而失败时抛出来分配内存而失败时抛出System.StackOverflowExceptionSystem.StackOverflowExceptionSystem.StackOverflowExceptionSystem.StackOverflowException当执行栈被太多未完成的方法调用耗尽时抛出;典型情况是当执行栈被太多未完成的方法调用耗尽时抛出;典型情况是指非常深和消耗很大的递归指非常深和消耗很大的递归System.
6、NullReferenceExceptionSystem.NullReferenceExceptionSystem.NullReferenceExceptionSystem.NullReferenceException当当nullnull引用在造成引用的对象被需要的情况下使用时抛出引用在造成引用的对象被需要的情况下使用时抛出System.TypeInitiallizationExceSystem.TypeInitiallizationExceSystem.TypeInitiallizationExceSystem.TypeInitiallizationExceptionptionptionpt
7、ion当一个静态构造函数抛出一个异常,并且没有任何当一个静态构造函数抛出一个异常,并且没有任何catchcatch语语句来捕获它的时候抛出句来捕获它的时候抛出System.InvalidCastExceptionSystem.InvalidCastExceptionSystem.InvalidCastExceptionSystem.InvalidCastException当一个从基本类型或接口到一个派生类型的转换运行失败时当一个从基本类型或接口到一个派生类型的转换运行失败时抛出抛出System.ArraryTypeMismatchExcepSystem.ArraryTypeMismatchEx
8、cepSystem.ArraryTypeMismatchExcepSystem.ArraryTypeMismatchExceptiontiontiontion当因为存储元素的实例类型与数组的实际类型不匹配而造成当因为存储元素的实例类型与数组的实际类型不匹配而造成数组存储失败时抛出数组存储失败时抛出通用异常类通用异常类12异常类异常类说明说明System.IndexOutOfRangeExceptioSystem.IndexOutOfRangeExceptioSystem.IndexOutOfRangeExceptioSystem.IndexOutOfRangeException n n n 当
9、试图通过一个比零小或者超出数组边界的下标来引用一当试图通过一个比零小或者超出数组边界的下标来引用一个数组元素时抛出个数组元素时抛出System.MulticastNotSupportedExSystem.MulticastNotSupportedExSystem.MulticastNotSupportedExSystem.MulticastNotSupportedExceptionceptionceptionception当试图合并两个非空委托失败时抛出。因为委托类型没有当试图合并两个非空委托失败时抛出。因为委托类型没有voidvoid返回类型返回类型System.ArithmeticExce
10、ptionSystem.ArithmeticExceptionSystem.ArithmeticExceptionSystem.ArithmeticException一个异常的基类,它在进行算术操作时发生,如一个异常的基类,它在进行算术操作时发生,如DividebyZeroExceptionDividebyZeroException 和和 OverflowExceptionOverflowExceptionSsytem.DividByZeroExceptionSsytem.DividByZeroExceptionSsytem.DividByZeroExceptionSsytem.DividBy
11、ZeroException当试图用整数类型数据除以零时抛出当试图用整数类型数据除以零时抛出System.OverflowExceptionSystem.OverflowExceptionSystem.OverflowExceptionSystem.OverflowException当选中的上下文中所进行的算术操作、类型转换或转换操当选中的上下文中所进行的算术操作、类型转换或转换操作导致溢出时抛出作导致溢出时抛出通用异常类通用异常类什么是异常处理异常用户自定义异常实现13内容内容这些异常处理块可以使用下面的关键字实现:trytry catch catch Finally Finally一个显示可
12、能产生错误的块包含一个或者多个异常处理程序。14处理异常处理异常在 C#程序中,引发异常共有以下两种方式使用显式 throw 语句来引发异常。在此情况下,控制权将无条件转到处理异常的部分代码(人为引发异常)使用语句或表达式在执行过程中激发了某个异常的条件,使得操作无法正常结束,从而引发异常(非期望异常)15处理异常处理异常try 块:try块监视可能抛出异常的语句。以下是 try 块的语法:try/可能会抛出异常的代码语句try块管理包含在它内部的语句,定义与它相关的异常处理程序的范围。try块必须至少有一个catch块。16处理异常处理异常catch 块:catch块的语句使用一个异常类的对
13、象作为参数,它引用一个产生的异常。你可以通过提供一个或更多catch处理程序将一个异常处理程序与try块相联系,紧挨着try块之后:try /statements that may cause an exceptioncatch()/error handling code17处理异常处理异常class Tester public static void Adding_Numbers(int number1,int number2)try int res=number1/number2;Console.WriteLine(res);catch(DivideByZeroException e)Co
14、nsole.WriteLine(Exception caught.0,e);Console.WriteLine(After handling the exception);public static void Main()Adding_Numbers(10,0);Console.ReadLine();18示例示例finally 块:finally块被用于执行一个给定的语句集,不论异常是否被抛出。try /statements that may cause an exceptioncatch()/error handling codefinally/statements to be execut
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八章_异常处理全 2 第八 异常 处理
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内