第6章 异常处理课件.ppt

上传人:春哥&#****71; 文档编号:15243520 上传时间:2022-05-11 格式:PPT 页数:26 大小:118.50KB
返回 下载 相关 举报
第6章 异常处理课件.ppt_第1页
第1页 / 共26页
第6章 异常处理课件.ppt_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《第6章 异常处理课件.ppt》由会员分享,可在线阅读,更多相关《第6章 异常处理课件.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第6章 异常处理本章学习目标v了解异常和异常分类v了解Java异常处理机制和异常类v掌握try/catch/finally语句处理异常的方式以及如何声明异常v了解自定义异常任务1:了解什么是异常 【任务内容】了解什么是异常【能力目标】v了解什么是异常v了解异常类和错误类的区别6.1 了解异常v 我们总是试图避免在软件程序中错误的发生,但是百分之百没有错误的程序是不存在的。无论怎样,如果我们能适当的处理错误,将会极大的改善程序的可读性、可靠性以及可维护性。观察下面的实例观察下面的实例:ExceptionDemo.java 程序在运行过程中发生异常或错误后,如果不做任何处理,程序就会被终止程序就会

2、被终止,为了保证程序有效地执行,就需要对发生的异常或错误进行相应处理。在Java程序中 ,异常处理允许程序捕获异常,处理它们,然后程序继续执行,它是分层把关,因此,错误情况不会介入到程序的正常流程中。 Java中异常类的继承关系ObjectThrowableErrorExceptionAWTExceptionIOExceptionRuntimeExceptionError 类对象类对象:由 Java 虚拟机生成并抛出;这样的异常超出了程序可控制的范围(硬件故障、内存泄露、死循环等)。在Java编程语言中,错误类定义被认为是不能恢复的严重错误条件。在大多数情况下,当遇到这样的错误时,建议让程序中

3、断。 Exception 类对象类对象:由应用程序处理或抛出;该类异常定义了程序中可能遇到的轻微的错误条件,可编写代码来处理异常并继续执行程序,而不是让程序中断。 (想打开的文件不存在;网络连接中断;受控操作数超出预定范围;正在装载的类文件丢失)。v “异常”这个词有“对此感到意外”的含义。出现异常的代码部分不清楚该如何处理,但也知道不能置之不理。这段程序需要停下来,看看是不是别的地方的程序能够处理这个问题。只是在当前的环境下没有足够的信息来解决这个问题,所以就把问题提交到一个更高级别的环境中。程序中的错误可能来自于编译错误编译错误和运行错误运行错误。编译错误编译错误是由于所编写的程序存在语法

4、问题语法问题,未能通过由源代码到目标代码的编译过程而产生的错误,它将由语言的编译系统负责检测和报告编译系统负责检测和报告;运行错误运行错误是在程序的运行过程中产生的错误。v任务2:了解异常的分类【任务内容】了解异常的分类【能力目标】掌握异常类6.1 了解异常 T hrowable Error Exception StackO verflowError A rithmeticException VirtualM achineError RuntimeException IO Exception A W T Error O utO fM emoryError N ullPointerExcepti

5、on FileN otFoundException IndexO utO fBoundsException EO FException 描述了Java虚拟机内部错误及资源耗尽的情形,应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。 包括RuntimeException和其他非RuntimeException v任务3:了解异常类常用的方法【任务内容】了解异常类常用的方法【能力目标】掌握异常类常用的方法6.1 了解异常public class ExceptionDemo public static void main(String args) String strPrice = 20;t

6、ry /进行数据类型转换时,parseFloat方法有可能出现异常 float fprice = Float.parseFloat(strPrice); catch (NumberFormatException nfe) System.err.println(Exception: + nfe.getMessage();System.err.println(Exception: + nfe.toString();nfe.printStackTrace(); v任务4:了解异常的捕获 【任务内容】了解异常的抛出和捕获【能力目标】掌握异常的抛出和捕获6.1 了解异常v对于异常有三种处理方法:(1)

7、捕获异常。通过try.catch语句语句,在catch子句中编写处理异常的语句。(2) 抛出异常。通过throw语句,抛出一个异常对象。 对于系统定义的异常类,Java程序在运行过程中会自动自动生成异常类对象并自动抛出生成异常类对象并自动抛出;对于用户自定义异常类则要手动生成异常类对象然后再手动抛出手动生成异常类对象然后再手动抛出提交到运行时系统。(3) 声明异常。就是在方法名后面加上throws Exceptionname。方法本身只是声明抛出异常,由函数的函数的调用者来捕获异常调用者来捕获异常。v任务5:掌握try.catch语句【任务内容】掌握try.catch语句【能力目标】掌握try

8、.catch语句范例:ExceptionDemo2 .java6.2 trycatch语句Try-catch-finally语法格式vtryv调用有可能产生异常的方法及其他调用有可能产生异常的方法及其他java语句;语句;vcatch(异常类名(异常类名 异常对象名)异常对象名)v异常处理;异常处理;vcatch(异常类名(异常类名 异常对名)异常对名)v异常处理;异常处理;v.vfinallyv最终处理;最终处理;vpublic class TryCatchFinallyvpublic static void main( String args )v Method( 0 ); Method(

9、 1 );Method( 2 );vstatic void Method( int a )vSystem.out.println(调用方法调用方法 Method(+a+);vtryv if( a=0 )v System.out.println(t没有异常产生,正常退出。没有异常产生,正常退出。);v return;v else if( a=1 )v int i=0; int j=4/i; v else if ( a=2 )v int iArray =new int4; iArray4=3; v vcatch( ArithmeticException e )v System.out.printl

10、n(t捕获异常:捕获异常: +e);vcatch( ArrayIndexOutOfBoundsException e )v System.out.println(t捕获异常:捕获异常:+e.getMessage( ); vcatch( Exception e )v System.out.println(t产生的异常已被处理,该产生的异常已被处理,该catch块不会被块不会被执行。执行。); vfinallyv System.out.println(tfinally块总是被执行。块总是被执行。); vv注意:注意:在使用多重在使用多重catch语句块时,异常子类一定要语句块时,异常子类一定要位于

11、异常父类之前,否则,控制权将永远传不到子位于异常父类之前,否则,控制权将永远传不到子类,将产生一个不能执行的代码,就会发生编译错类,将产生一个不能执行的代码,就会发生编译错误。误。 v任务6:了解Java异常处理机制vJava程序在执行中,如果方法中的一个语句抛出一个没有在相应的trycatch块中处理的异常,那么这个异常就被抛出到调用方法中调用方法中。如果异常也没有在调用方法中被处理,它就被抛出到该方法的调用程该方法的调用程序序。这个过程要一直延续到异常被处理。如果异常到这时还没被处理,它便回到main(),如果如果main()不处理它不处理它,那么,该异常就异常地中断程序该异常就异常地中断

12、程序。6.2 trycatch语句v任务7:声明抛出异常【任务内容】声明抛出异常【能力目标】掌握抛出异常的方法范例:ThrowsException .java6.3 throws关键字v程序员可以做满足该要求的两件事:第一,通过将trycatch块纳入其代码中,在这里捕获给被命名为属于某个超类的异常,并调用方法处理它。即使catch块是空的,这也算是处理情况。第二,让被调用的方法表示它将不处理异常,而且该异常将被抛回到它所遇到的调用方法中。它是通过用throws子句标记的该调用方法的声明来实现的。v使用throws关键字语法:返回类型 方法名(参数列表) throws 异常类名1, 异常类名2

13、, 异常类名3任务8:自定义异常类【任务内容】采用继承Throwable类方式,新建自定义异常类【能力目标】v掌握自定义异常类的基本结构v学会如何编写一个自定义异常类v【任务分析】要完成这个任务,首先通过class关键字声明一个自定义异常类,接着在自定义异常类名的后面用extends关键字,让其继承Throwable这个父类即可。6.4自定义异常与 throw关键字class 自定义异常自定义异常 extends 父异常类名父异常类名 类体类体; 例如:class NumberRangeException extends ExceptionNumberRangeException(String

14、 msg)super(msg);v范例:创建自定义异常类,采用继承Throwable类 vMyFirstException .javav范例:用继承Exception类方式,新建自定义异常类vMySecondException .java 任务9:抛出异常的方法 throw关键字【任务内容】使用throw关键字在方法中抛出异常【能力目标】v学会使用throw关键字v掌握捕获异常,并进行相应的异常处理【任务分析】 程序在运行中会出现很多种情况,这时程序往往需要根据不同的情况,抛出指定指定的异常类对象,在当前方法中或者是当前方法的调用者要对其进行相应的处理,这时,就需要用到throw关键字,用它抛

15、出指定的异常类对象。范例: ThrowException .java6.4自定义异常与 throw关键字任务10:了解finally关键字【任务内容】了解finally关键字【能力目标】了解finally语句块的作用v范例:ExceptionDemo3 .java finally语句的主要作用是在try或catch转到其他部分前做的一些“善后”工作。例如:关闭打开的文件,释放连接、内存等系统资源。 finally语句的执行是一种无条件的操作,无论在哪种异常下都会执行,即使try或者catch语句块中有continue、return、break等关键字,或者throw语句,程序都会执行finally语句。注意:终止程序的终止程序的System.exit(0)方法在方法在try语句块中语句块中被执行时,这是被执行时,这是finally语句不被执行的唯一情况。语句不被执行的唯一情况。 6.5 finally关键字作业v1. 编写一个自定义异常类MyException1,再编写测试类TestException,要求抛出MyException1类对象并捕获。v2. 编写一个自定义异常类MyException2,从键盘输入一个数,若输入的数不小于0,则输出它的平方根;若小于0,则抛出MyException2类对象,输出提示信息“输入错误”。提示:求平方根可以调用Math类的sqrt()方法。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁