欢迎来到天天文库
浏览记录
ID:42154299
大小:618.50 KB
页数:55页
时间:2019-09-09
《第08章 异常处理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第8章异常处理8.1异常简介8.2引发异常8.3异常的捕捉及处理8.4finally语句8.5关键字checked和unchecked8.6习题8.1异常简介数学运算中,被零除是一个错误。在C#语言中,当除数和被除数中有一个是float或double型数被零除将返回一个PositiveInfinity(正无穷大)值;当一个负float或double型数被零除将返回一个NegativeInfinity(负无穷大)值;当一个值为零的float或double型数被零除将返回一个NaN(不是数字)值。其中Pos
2、itiveInfinity、egativeInfinity、NaN都是常量,它们在结构System.Single和System.Double中均有定义。8.1异常简介(续)例:doubled1=10/0.0;//值为PositiveInfinitydoubled2=0.0/0;//值为NaNfloatf=-1f/0;//值为NegativeInfinity8.1异常简介(续)一个整数被零(零的类型为整数类型)除被认为一个错误。当除数是一个整数常量时,这种错误能被编译器发现。inti=10/0;//编译错
3、误intd=10;d=d/0;//编译错误当除数是一个变量时,编译器并不能发现这种错误。这种错误只会在运行时表现出来。8.1异常简介(续)除法运算表达式中的操作数有一个是decimal型时,被零除也被认为是一个错误。不过,只有参与这种除法运算的两个操作数都是常量时,被零除的错误才能被编译器发现,否则,这种错误只会在运行时表现出来。例8-1被零除异常源代码运行例8-1被零除异常usingSystem;classDivideByZero{staticvoidMain(){inti,j,k;i=1;j=0;C
4、onsole.WriteLine(i);Console.WriteLine(j);k=i/j;Console.WriteLine(k);}}8.1异常简介(续)异常是指程序运行过程中出现的非正常事件。是程序错误的一种。为保证程序安全运行,程序中需要对可能出现的异常进行相应的处理。C#语言的异常处理机制可以将具体操作代码和异常处理代码分开,在一个地方集中处理异常。C#语言的异常都是异常类的对象。框架类库中预定义了大量的异常类,每个异常类代表了一种异常错误。每当C#程序出现运行错误时,系统就会创建一个相应的
5、异常类对象(即异常)并引发。8.1异常简介(续)Exception:所有异常的基类SystemException:框架类库中预定义异常的基类ApplicationException:发生非致命应用程序错误时引发的异常ArgumentException:所有参数异常的基类ArgumentNullException:由不允许参数为空的方法引发ArgumentOutOfRangeException:由验证参数是否位于给定范围内的方法引发8.1异常简介(续)ArithmeticException:在算术运算期间
6、发生的异常的基类ArrayTypeMismatchException:当数组存储给定的元素时,如果由于该元素的实际类型与数组的实际类型不兼容而导致存储失败,就会引发此异常DivideByZeroException:在试图用零除整数或decimal值时引发IndexOutOfRangeException:在试图为数组设置小于零或超出数组界限的索引时引发InvalidCastException:当从基类型到接口或派生类型的显式转换在运行时失败时,就会引发此异常8.1异常简介(续)IOException:发生
7、I/O错误时引发的异常NullReferenceException:在需要使用引用对象的场合,如果使用null引用,就会引发此异常OutOfMemoryException:在尝试通过new分配内存失败时引发OverflowException:在checked上下文中的算术运算溢出时引发StackOverflowException:当执行堆栈由于具有太多的挂起方法调用而耗尽时,就会引发此异常8.1异常简介(续)异常类都定义有下述属性:Message//获取描述当前异常的消息StackTrace//获取当前
8、异常发生时调用堆栈上的状态8.1异常简介(续)Exception类的常用构造函数:publicException()publicException(stringmessage)其中参数stringmessage,通常用于描述该异常8.1异常简介(续)ArgumentException异常类:ParamName//属性,获取导致该异常的参数的名称publicArgumentException(stringmessage,stringparam
此文档下载收益归作者所有