面向程序基础设计 8_第1页
面向程序基础设计 8_第2页
面向程序基础设计 8_第3页
面向程序基础设计 8_第4页
面向程序基础设计 8_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

面向对象程序设计与实践第八章Java异常处理机制面向对象程序设计与实践课程组教学目标教学方式重点知识学习目标1.了解Java异常及异常处理机制2.熟练掌握try…catch…finally语句的使用方法3.掌握throws、throw语句的用法4.掌握自定义异常的创建及使用1.try…catch…finally语句的使用方法2.自定义异常的创建及使用本章节以理论讲解、效果演示、代码讲解为主。要求学生掌握Java中异常的处理方法目录CONTENTS

018-1文件复制028-2银行取款01文件复制案例描述案例分析关联知识案例实现案例小结案例拓展8-1案例描述编写程序将电脑中的一个文件从当前路径复制到另一个路径下,复制过程中有没有可能发生意外?会有哪些意外出现让复制无法完成?1、文件/路径不存在2、磁盘空间不足3、复制过程出错4、...1、开发人员考虑完所有可能出现的意外,对开发人员要求过高2、逻辑代码和错误处理代码放在一起会影响程序的健壮性8-1案例描述8-1关联知识编译错误

单词拼写、括号匹配、大小写等编译通过,但运行出现错误异常(Exception)异常(Exception)是指程序运行过程中出现的非正常现象。遇到异常时,程序需要做出合理的处理并安全退出,不至于使程序崩溃。Java中异常处理机制:定义描述和处理异常的类,异常类中包含该类的异常信息和出现异常后的处理方法。8-1关联知识异常的分类错误(Error)是应用程序中存在比较严重的问题,例如JVM运行错误等,这种错误与代码无关,程序是无法进行处理的,开发人员不用理会。异常(Exception)

运行时异常(RuntimeException):由于编程错误导致的,产生频繁,系统有默认的异常

处理程序,用户不必对其进行处理,包括算术异常(ArithmeticException)、数组下标越

界异常(ArrayIndexOutOfBoundsException)、空指针异常(NullPointerException)等。

非运行时异常:不属于RuntimeException的异常,包括IOException、SQLException和用户

自定义异常等。8-1关联知识例:数组下标越界异常修改后的程序:8-1关联知识异常的处理异常的处理是指程序在出现异常后依然可以正确的执行完毕。

Java异常处理机制有两种:捕获异常、抛出异常捕获异常

程序发生异常后,系统会寻找匹配的异常处理类,如果找到异常类程序从发生异常的方法

转去异常类处理,如果找不到相符合的异常类,则运行终止。

捕获异常通过try…catch语句或try…catch…finally语句实现。可能出现异常的代码放在try语

句中,catch语句匹配各种不同的异常类,无论是否发生异常及异常是否处理finally都是必

须要执行的语句8-1关联知识try语句:是一段可能出现异常的代码,程序运行时,如果有语句出现异常,程序会跳过这条语句后面的代码,去catch语句中寻找对应的异常处理类。一个try语句后可以有多个catch语句。catch语句:每个catch语句声明一种特定类型的异常并提供处理方案。finally语句:为异常提供一个统一的出口,无论try所指定的程序中是否存在异常,finally所指定的代码都要被执行。8-1关联知识捕获到异常后,对异常的处理方法可以使用继承自Throwable类的三种方法:toString()方法:显示异常的类名和出现异常的原因。getMessage()方法:只显示出现异常的原因,但不显示异常的类名。printStackTrace()方法:显示异常的信息,跟踪异常事件发生的位置。8-1关联知识throws抛出异常

如果一个方法可能出现异常,但是无法处理这个异常,则可以在方法声明处使用throws子句来声明抛出异常。throws语句的语法格式为:

当方法体中出现抛出异常列表中的异常时,方法不处理这个异常,而是将异常抛向调用该方法的异常,使调用该方法的异常去处理。如果调用者不想处理该异常,则可以继续向上抛出,但最终要有能够处理该异常的调用者。8-1关联知识8-1关联知识throw抛出异常

在try…catch语句可以用throw语句抛出异常,遇到throw语句后程序会立刻终止,不再执行后面的代码,然后在包含throw语句的try语句中从里向外寻找与其匹配的catch子句。程序有两个机会处理相同的错误,在main()方法中有一个异常关系,然后在调用demoproc()方法中还有另一个异常关系,并且在处理异常时把这个异常又抛出来了,所以这个异常在main()方法中又被捕获一次。8-1关联知识8-1案例分析交流与讨论结合案例分析,思考一下几个问题:用捕获异常的方法进行处理,如何设计?用抛出异常的方法进行处理,如何设计?8-1案例实现通过捕获异常的方法实现案例通过抛出异常的方法实现案例8-1案例小节捕获异常抛出异常JDKAPI查询在catch语句后面有finally语句,无论是否出现异常,最后都要关闭I/O流。将复制文件的语句放到了readFile()方法中,在这个方法中遇到了异常不用处理,而是在声明方法时使用throws语句将异常排除,异常的处理就留给调用该方法的main()方法来处理。8-1案例拓展编写程序实现两个一维数组的复制,思考在这个过程中可能出现的异常,运用异常的处理机制来正确地处理可能出现的异常。02银行取款案例描述案例分析关联知识案例实现案例小结案例拓展8-2案例描述案例8-1的异常是Java可以自行处理的,但是遇到Java内置异常类无法处理的情况时,程序该如何设计?在日常生活中我们经常会在银行的ATM机上取款,如果取款时账户内的金额小于取款金额,则无法取款,因此要给出相应的提示,不能判断为系统出错,直接结束程序。8-2关联知识自定义异常类当系统内置异常类无法描述用户想要表达的问题可以创建自定义异常类。用户自定义异常类只需要继承Exception类即可。在程序中使用自定义异常类的步骤如下。(1)创建自定义异常类。(2)在方法中通过throw关键字抛出异常类的对象。(3)如果在当前抛出异常的方法中处理异常,则可以使用try…catch语句捕获异常并处理,也可以在方法的声明处通过throws关键字把异常抛给方法的调用者,继续下一步操作。(4)在出现异常方法的调用者中捕获并处理异常。注意:自定义异常类属于非运行异常,因此必须要进行处理;

由于不会自行出现自定义异常,所以必须采用throw语句抛出异常。8-2案例分析交流与讨论结合案例分析,思考一下几个问题:此处异常是系统可以自动处理的异常,还是无法处理的异常?如果设计一个自定义异常类,这个类如何设计?何时需要抛出这个自定义异常类?8-2案例实现8-2案例小节自定义异常类JDKAPI查询本案例自定义

温馨提示

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

评论

0/150

提交评论