第8章 异常值处理_第1页
第8章 异常值处理_第2页
第8章 异常值处理_第3页
第8章 异常值处理_第4页
第8章 异常值处理_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章

异常处理

本章要点:

异常处理的基本概念

try…catch…finally结构

C#中的异常类

用户自定义异常8.1循序渐进学理论

8.1.1异常处理概念

【例8-1】编写一个除法计算器,计算器的设计界面如图8-1所示。程序运行时,输入被除数和除数后按【计算】按钮将会把运算结果显示在【结果】后面的文本框中,如图8-2所示。要求程序能够识别出除数为零的错误并给出提示信息,如图8-3所示。图8-1程序设计界面

图8-2程序正常运行界面

图8-3除数为零的情况

8.1.2捕获处理异常

[格式]:try{

语句组1; //程序中需要执行的语句}catch(异常1) //发生了“异常1”指定的异常{

语句组2; //执行该异常处理}……catch(异常n) //发生了“异常n”指定的异常{

语句组n; //执行该异常处理}finally //必做的自理{语句组n+1; //该语句块一定被执行,无论是否产生异常}【例8-2】对例8-1进行改造使之能够捕获到除数为零的异常(只对整数产生,对于实数结果为无穷大)、输入数据格式不正确的异常以及其它所有异常。图8-4~图8-6是发生了几种异常情况时的程序运行界面。图8-4除数为0异常

图8-5不能转换为整型的异常

图8-6其它异常

8.1.3C#的异常类

在C#中,所有的异常都派生于Exception类,该类包含在公共语言运行库中。该类有两个重要的属性,如下:(1)Message属性:该属性是只读属性,包含对异常原因的描述信息。(2)InnerException属性:该属性也是一个只读属性,它包含这个异常的“内部异常”。

8.1.4抛出和重发异常

1.抛出异常用户自己产生并抛出异常需要使用throw语句。[格式1]:throw[格式2]:throw异常对象

【例8-3】在“除法计算器”中对输入的除数进行判断,如果除数为0则主动抛出“除数为零”的异常。除数为“0”时的程序运行界面如图8-7所示。图8-7除数为0时的程序运行界面

2.重发异常

当发生异常后,可以在catch语句中对异常进行捕获,然后进行处理,处理过程还可以通过throw语句把异常重发给调用者。

【例8-4】用函数实现除法计算器的功能。如果发现除数为零,则把结果默认为整数的最大值。同时程序显示出“执行结果不可靠”的提示信息。程序的运行界面如图8-8所示。图8-8除数为0时的运行界面

【例8-5】对例8-4进行改进,使主调方法中能够显示出在被调方法中发生的异常是何种异常,发生异常时的程序运行界面如图8-9所示。图8-9除数为0时的运行界面

8.1.5checked和unchecked运算符的用法

C#提供了checked和unchecked运算符,指定是否检查整型算术运算的溢出。

checked运算符的格式如下。[格式]:checked(整型算术表达式)unchecked运算符的格式如下。[格式]:unchecked(整型算术表达式)

注意:不但算术运算会产生溢出,整型数据类型之间的显式转换也会导致溢出。例如,将整数1000000从int转换为short会导致溢出,因为short类型的数值可以保存的最大值是32767。

【例8-6】编写一个整型加法计算器,如果运算结果超出了整数的表示范围则发生溢出异常并对之进行捕获。程序的设计界面如图8-10所示,程序的运行界面如图8-11所示。图8-10程序设计界面

图8-11溢出时的程序运行界面

8.2典型实例练能力

8.2.1典型实例一:异常处理的综合演示【实例题目】编写一个控制台程序,程序名为divpro,程序的功能是求两个整数的商。要求程序运行情况如下:(1)如果以命令行“divpro105”的形式运行,将出现正常结果,显示“10除5的商为:2”。(2)如果以命令行“divpro”、“divpro10”的形式运行,将出现提示信息:“输入参数不够”。(3)如果以命令行“divpro

abcd”或“divpro10asdhjk”的形式运行,将出现提示信息:“输入字符串的格式不正确”。(4)如果以命令行“divpro100”的形式运行,将出现提示信息:“试图除以零”。(5)如果以命令行“divpro3276898765872”或“divpro2327689876587”的形式运行,将出现提示信息:“值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论