面向对象程序设计--第6章_第1页
面向对象程序设计--第6章_第2页
面向对象程序设计--第6章_第3页
面向对象程序设计--第6章_第4页
面向对象程序设计--第6章_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、第六章异常处理异常处理目录任务任务6.1 处理系统异常处理系统异常任务任务6.2 处理自定义异常处理自定义异常任务任务6.1 处理系统异常处理系统异常21知识目标知识目标能力目标能力目标异常机制异常捕捉异常处理 利用异常处理提高系统的容错能力6.1.1情境描述情境描述在收银过程中,输入的销售数量应该是数字,但当收银员输入过程中输入的数据不是正确的数字,例如输入字母或者其它非数字字符时,系统就会发生错误,为了解决这个问题,他需要完成以下任务:1)异常捕获2)异常处理第1章目录计算机在接受来自用户输入的数据时,难免发生错误,一旦存在输入的数据非法,计算机的软件系统应该具备容错能力,程序应该能够处理

2、非法输入。目前收银过程中的程序不能对非法错误进行容错,为了处理非法的输入,可以利用异常捕获和异常处理来实现。第1章目录6.1.2问题分析问题分析1、利用Visual Studio 2010打开任务5.5项目2、针对CashRegisterMenu.cs类进行修改,针对AddMenu()方法添加异常捕捉和处理机制。3、修改EditMenu,添加异常捕获及处理功能。4、运行输入非法数据进行验证结果第1章目录6.1.3解决方案解决方案6.1.4知识总结知识总结1、异常处理异常是指应用程序运行时遇到的错误或程序意外的行为。如,在运算中被除数为0,数组的下标越界等等的系统定义的异常;也有用户自定义的异常

3、。在程序运行时出现的错误有以下两种:(1)语法错误程序的语法错误是由于不满足程序设计语言语法而产生的错误,例如关键字被写错,或者一个语句结束时忽略了分号,在写方法体的时候少了一个大括号等等,程序设计语言是一个逻辑的整体,中间任何一步的错误都将导致整个程序不能正常运行。语法错误大概有如下几种类型:语句结束少了分号。一般而言,C#语言每一条完整的语句后面都是以分号作为结束的。但是大家注意在for,if,while 小括号后面的语句体只要不是空语句,是不应该加分号的,do-while语句后面例外,要加分号。第1章目录6.1.4知识总结知识总结类型匹配错误。例如 int i ; i=67.66;定义的

4、变量名在使用的时候由于笔误写错,例如 int count;在引用变量的时候不小心写成cont;引用了空值,定义了一个对象,没有实例化就引用它,这样是不允许的,在定义对象的时候要先初始化。If else嵌套的时候的匹配错误。数组下标越界问题。例如定义了具有10个元素的数组arr,在使用的时候arr10,那么就超出了范围。在条件判断的时候“= =”经常误写成“=”。例如判断整型变量a是否等于100,如果是则输出优秀,如果不是,则输出良好。第1章目录6.1.4知识总结知识总结(2)逻辑错误 逻辑的错误指的是程序的处理逻辑出现错误,也就是程序编译和运行都正常,但运行结果不是预期的,一般语法错误可以在编

5、译的时候发现,但逻辑错误编译器无法识别。有些无法捕获的语法错误就会导致逻辑错误,比如刚才讲的语法错误的第七项,在编译的时候就不会发现,但是如果把if表达式里面的“= =”写成“=”,那么a的值不是100,也会输出优秀。(3)运行时错误程序在运行的时候试图去执行一个不被允许的操作,运行时错误一般被称为异常,需要加上异常处理。第1章目录6.1.4知识总结知识总结2、异常的种类在C#中,所有异常的的基类都是System.Exception类,所有的异常都是从此类派生的。当错误发生时,当前运行的程序通过引发包含关于该错误的信息的异常来报告错误。异常发生后,将由该应用程序或默认异常处理程序进行处理。Sy

6、stem.Exception异常类包含两种类型的异常,分别为System.SystemException和System.ApplicationException。(1)System.SystemException是所有系统预定义的异常的基类。下表描述了派生自系统预定义的异常。(2)System.ApplicationException类是由用户程序发送的,也就是由用户自定义的异常类。第1章目录6.1.4知识总结知识总结3、异常处理C# 语言的异常处理功能提供了处理程序运行时出现的任何意外或异常情况的方法。异常处理使用 try、catch 和 finally 关键字来尝试可能未成功的操作,处理失

7、败,以及在事后清理资源。把会产生异常的代码用try模块括起来,产生或抛出异常时,在catch块中进行处理。如果try语句后面的代码发生了异常,系统将会捕获这个异常,并转到catch语句后面的的代码来处理此异常。异常出现时可以使用throw语句抛出。Throw语句中包括throw关键字及其后面抛出异常的表达式。运算该表达式时抛出异常类的实例对象异常。Finally块Catch块包含的代码是异常发生的时候就会运行,而finally块包含的代码是不管异常是否发生或者是否找到与异常类型匹配的catch块,finally块始终会执行。所以我们可以使用finally块释放资源,例如关闭文件、关闭与数据库的

8、连接等。第1章目录6.1.5应用实践应用实践 计算一个超市半年的销售总量是多少,用一个数组来存放每个月的销售总量,然后计算半年的销售总量。在计算过程中处理数组的异常。第1章目录任务任务6.2 处理自定义异常处理自定义异常21知识目标知识目标能力目标能力目标自定义异常类抛出异常自定义异常提高系统容错6.2.1情境描述情境描述Jack利用系统异常成功的解决了输入过程中的非数字异常处理,但是对于销售过程中的数量问题,仅控制数字输入时不能完全解决问题,因为购买的数量还必须是大于0的数据才对。为了解决此类异常,他需要完成以下任务:1)创建自定义异常2)自定义异常处理第1章目录6.2.2问题分析问题分析针

9、对销售数量,仅进行数字有效性的处理是不够的,根据销售的业务逻辑,销售的数据还必须是大于0,系统异常不能处理此类业务逻辑问题,为了解决这类问题,可以利用自定义异常进行处理。先利用throws命令进行异常抛出,再通过try catch进行处理。第1章目录6.2.3解决方案解决方案1、利用Visual Studio2010打开任务6.12、新建自定义异常类CashQuantityException。3、在CashRegisterGoods类接受数量是进行有效性判断,对于无效的数据,系统进行自定义异常抛出。4、在CashRegisterMenu.cs的AddMenu及EditMenu中处理CashQu

10、antityException异常,5、运行测试系统自定义异常。第1章目录6.2.4知识总结知识总结在C#中,系统定义的标准异常一般情况下可以满足我们的需要,但有的时候没有合适的异常供我们使用的时候,我们可以创建自定义的异常类,自定义的异常类一般继承System.ApplicationException,在命名自定义异常类的时候,命名约定写成和系统异常相似的名字,并以Exception结尾.(1)定义一个异常语法格式public class 自定义异常名 :ApplicationException /继承基类 public 自定义异常名(string message):base(message

11、) 第1章目录6.2.4 知识总结知识总结(2)抛出异常定义一个类A发生自定义异常的时候,并不处理,使用throw抛出自定义异常类。(3)捕获异常在应用程序中,使用类A的时候,由于类A抛出了一个异常,所以要对此异常使用try catch语句进行捕获处理。 第1章目录6.2.5应用实践应用实践 超市中要求员工的年龄在18岁到60岁之间,如果员工的年龄超出了这个范围需要进行异常处理,需要经过以下三个步骤。自定义一个异常类名为CustomerAgeException继承基类ApplicationException定义一个类CustAge,当员工年龄不符合要求的时候,使用throw语句抛出异常CustomerAgeException捕获异常,在Main函数中使用抛出了异常的Cust

温馨提示

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

评论

0/150

提交评论