异常的捕获及处理课件

上传人:cl****1 文档编号:571067646 上传时间:2024-08-08 格式:PPT 页数:21 大小:334KB
返回 下载 相关 举报
异常的捕获及处理课件_第1页
第1页 / 共21页
异常的捕获及处理课件_第2页
第2页 / 共21页
异常的捕获及处理课件_第3页
第3页 / 共21页
异常的捕获及处理课件_第4页
第4页 / 共21页
异常的捕获及处理课件_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《异常的捕获及处理课件》由会员分享,可在线阅读,更多相关《异常的捕获及处理课件(21页珍藏版)》请在金锄头文库上搜索。

1、第第6章章 异常的捕获及处理异常的捕获及处理6.1 异常简介异常简介6.2 异常类的继承结构异常类的继承结构6.3 异常处理机制异常处理机制6.4 本章小结本章小结16.1 异常简介异常简介在程序运行过程中,可能会遇到一些在程序运行过程中,可能会遇到一些非正常的状况。非正常的状况。例如:例如:除以零、数组越界、文件读写时找不到指定的路径、数据除以零、数组越界、文件读写时找不到指定的路径、数据库操作时连接不到指定的服务器。此时程序将无法继续运库操作时连接不到指定的服务器。此时程序将无法继续运行,导致整个程序运行中断。这种非正常状况对程序来说行,导致整个程序运行中断。这种非正常状况对程序来说是一种

2、是一种异常异常。程序员程序员在程序的设计中必须考虑到各种异常在程序的设计中必须考虑到各种异常的发生的发生,并做,并做好好相应的处理相应的处理。通常一个好的程序,整体的通常一个好的程序,整体的1/3是在处理要完成的真正任是在处理要完成的真正任务,而务,而2/3是在处理异常,这样的程序才是最强壮的。是在处理异常,这样的程序才是最强壮的。Java提供一套完整的异常处理机制,保证程序的正常运行提供一套完整的异常处理机制,保证程序的正常运行.26.2 异常类的继承结构异常类的继承结构查阅查阅API文档文档ObjectThrowableRuntimeException Error Exception IO

3、ExceptionJava程序中的异常现象也采用了面向对象的思想,所程序中的异常现象也采用了面向对象的思想,所有的异常都使用有的异常都使用类类来描述。来描述。36.2 异常类的继承结构异常类的继承结构Error 类:应用程序在类:应用程序在运行期间运行期间发生的严重错误。例如,虚拟发生的严重错误。例如,虚拟机内存用尽、堆栈溢出等。(程序员管不了)机内存用尽、堆栈溢出等。(程序员管不了)Exception 类:几十个子类,描述了不同类型的异常。类:几十个子类,描述了不同类型的异常。非检查性异常非检查性异常:编译器在编译程序时不进行检查,到运行时才:编译器在编译程序时不进行检查,到运行时才会显现。

4、例如会显现。例如RuntimeException,像数组越界异常、整数除以像数组越界异常、整数除以零异常等。这类异常应该通过反复测试尽量避免,不应该靠异零异常等。这类异常应该通过反复测试尽量避免,不应该靠异常处理机制来处理,主要是由程序员经验不足或思维不够缜密常处理机制来处理,主要是由程序员经验不足或思维不够缜密造成的。造成的。检查性异常检查性异常:编译器在:编译器在编译程序时必须编译程序时必须进行异常处理,否则编进行异常处理,否则编译时不能通过。译时不能通过。例如例如IOException,像数据库连接失败、用光,像数据库连接失败、用光盘时用户没插入光盘等。这类异常程序员是无法避免的,应由盘

5、时用户没插入光盘等。这类异常程序员是无法避免的,应由异常处理机制处理。异常处理机制处理。46.3 异常处理机制异常处理机制异常处理的两种方式异常处理的两种方式捕获异常捕获异常trycatchfinally抛出异常抛出异常throw 、throws创建类创建类创建对象创建对象初始化初始化Java库类中的类库类中的类SUN程序员程序员程序员程序员用户创建的类用户创建的类程序员程序员程序员程序员程序员程序员异常类异常类SUN出现异常的语句出现异常的语句JVM(自动)(自动)处理异常时编程人员做什么?处理异常时编程人员做什么?给异常类对象起给异常类对象起名字名字抓它抓它处理处理它它抛抛它它5publi

6、c class ExceptionDemo01 public static void main(String args)System.out.println(* 计算开始算开始 *) ;int i = 10 ;int j = 0 ;int temp = i / j ;System.out.println(两个数字相除的两个数字相除的结果:果: + temp) ;System.out.println(* 计算算结束束 *) ; 1.异常范例异常范例ExceptionDemo01.javatry 可能出现异常的语句可能出现异常的语句;catch(异常类异常类1 异常对象名异常对象名) 异常异常1的

7、处理语句的处理语句;catch(异常类异常类2 异常对象名异常对象名) 异常异常2的处理语句的处理语句;finally 一定要运行的语句一定要运行的语句;关键字作用关键字作用try:捕捉异常:捕捉异常catch:处理异常:处理异常finally:异常的统:异常的统一出口一出口2.异常处理异常处理try-catch-finally7public class ExceptionDemo02 public static void main(String args)System.out.println(* 计算开始算开始 *) ;int i = 10 ;int j = 0 ; System.out.p

8、rintln(* 计算算结束束 *) ; 范例范例ExceptionDemo02.javatry int temp = i / j ;/ 此此处产生了异常生了异常 System.out.println(两个数字相除的两个数字相除的结果:果: + temp) ; catch ( ArithmeticException ae ) System.out.println(出出现异常了:异常了: + ae) ;程序在开发中不会只存在一个异常,肯定会同时存在程序在开发中不会只存在一个异常,肯定会同时存在多个异常。此时就需要使用多个异常。此时就需要使用多个多个catch语句语句进行处理进行处理多重多重cat

9、ch处理异常处理异常编程:使用键盘输入两个数据,进行除法操作。编程:使用键盘输入两个数据,进行除法操作。分析分析(考虑考虑异常情况异常情况):没有输入参数或个数不够没有输入参数或个数不够数组超出绑定异常数组超出绑定异常输入的参数不是数字输入的参数不是数字数字格式化异常数字格式化异常除数为零除数为零算术异常算术异常9public class ExceptionDemo04public static void main(String args)int i , j ;tryString str1 = args0 ;/ 可能有异常可能有异常String str2 = args1 ;/ 可能有异常可能有

10、异常i = Integer.parseInt( str1 );j = Integer.parseInt( str2 );int temp = i / j ;/ 可能有异常可能有异常System.out.println(相除的相除的结果果: + temp); catch( ArithmeticException e)System.out.println(算算术异常异常: + e) ;catch( NumberFormatException e)System.out.println(数字数字转换异常异常: + e);catch( ArrayIndexOutOfBoundsException e)S

11、ystem.out.println(数数组越界异常越界异常: + e) ;catch( Exception e)System.out.println(异常异常: + e) ;System.out.println(* 计算算结束束 *) ;范例范例ExceptionDemo04.java10验证验证finally的作用的作用:异常的统一出口异常的统一出口public class ExceptionDemo03 public static void main(String args)System.out.println(* 计算开始算开始 *) ;int i = 10 ;int j = 2 ;tr

12、yint temp = i / j ; System.out.println(两个数字相除的两个数字相除的结果果: + temp) ;catch(ArithmeticException ae) System.out.println(出出现异常了异常了: + ae) ;finally System.out.println(不管是否出不管是否出现异常,都异常,都执行此代行此代码) ;System.out.println(* 计算算结束束 *) ; 11验证验证finally的作用的作用:异常的统一出口异常的统一出口tryopenDB( );readDB( );closeDB( );catch(Ex

13、ception e) System.out.println(出出现异常了异常了: + e) ;tryopenDB( );readDB( ); catch(Exception e) System.out.println(出出现异常了异常了: + e) ;finally closeDB( );12直接直接打印异常类对象:打印异常类对象:System.out.println(e) ;使用使用Exception类提供的一个方法:类提供的一个方法:printStackTrace( ) (注:开发中常用,打印异常的堆栈信息)(注:开发中常用,打印异常的堆栈信息)3.异常信息的输出异常信息的输出public

14、 class ExceptionDemo05 public static void main(String args)System.out.println(* 计算开始算开始 *) ;int i = 10 ;int j = 0 ;try int temp = i / j ;/ 此此处产生了异常生了异常 System.out.println(相除的相除的结果:果: + temp) ;catch( Exception e) e. printStackTrace( );System.out.println(* 计算算结束束 *) ; 134.异常抛出异常抛出throws、throwthrows:如果

15、一个方法引发了异常,但该方法本身并不对:如果一个方法引发了异常,但该方法本身并不对这个异常进行处理,而是交给这个异常进行处理,而是交给被调用处被调用处处理。那么该方法处理。那么该方法就要用就要用throws关键字来关键字来声明声明。例:例:public int div( int i , int j ) throws Exception 不含不含处理异常理异常语句句 ; 14class Math/定定义除法除法类public int div( int i , int j ) int temp = i / j ;/此此处有可能出有可能出现异常异常return temp ;public class

16、ThrowsDemopublic static void main(String args)Math m = new Math( ) ;/ 实例化例化Math类对象象 System.out.println(除法操作:除法操作: + m.div( 10 , 0 ) ; 范例范例ThrowsDemo.javathrows Exceptiontrycatch( Exception e)e.printStackTrace( ) ;/ 打印异常打印异常4.异常抛出异常抛出throws、throwthrow:有:有2个功能个功能Java中异常处理是中异常处理是分层次分层次的,的,throw可以把捕获到的异

17、常抛可以把捕获到的异常抛 到上一层,由上一层进行异常处理。到上一层,由上一层进行异常处理。 格式:格式:throw 异常类对象;异常类对象;以前处理的异常都是由系统以前处理的异常都是由系统(JVM)自动自动实例化的,不用实例化的,不用new. 现在,可以使用现在,可以使用throw关键字在方法中关键字在方法中手动手动抛出一个异常。抛出一个异常。范例范例ThrowDemo02.javaclass Mathpublic int div(int i , int j) int temp = 0 ;tryint temp = i / j ; /此此处有可能出有可能出现异常异常catch ( Except

18、ion e)throw e ;return temp ;public class ThrowDemo02public static void main(String args)Math m = new Math( ) ;trySystem.out.println(除法操作:除法操作: + m.div(10,0) ;catch(Exception e)System.out.println(异常异常产生:生: + e) ;public class ThrowDemo01public static void main(String args)trythrow new Exception(自己抛着玩的

19、。自己抛着玩的。) ; catch(Exception e)System.out.println(e) ;范例范例ThrowDemo01.java5.实战实战设计一个两个整数相除的程序。设计一个两个整数相除的程序。要求要求:在计算开始处打印在计算开始处打印“计算开始计算开始”信息信息 在计算结束处打印在计算结束处打印“计算结束计算结束”信息信息 如有异常交给调用处处理如有异常交给调用处处理说明:在一般的开发中说明:在一般的开发中trycatchfinally、throw、throws联合使用的情况是最多的。联合使用的情况是最多的。class Mathpublic int div(int i ,

20、 int j) throws ExceptionSystem.out.println(* 计算开始算开始 *) ;int temp = 0 ;/定定义局部局部变量量trytemp = i / j ; /此此处有可能出有可能出现异常异常catch ( Exception e)throw e ;finally System.out.println(* 计算算结束束 *) ; return temp ;public class ThrowDemo03public static void main(String args)Math m = new Math( ) ;trySystem.out.prin

21、tln(除法操作:除法操作: + m.div(10,0) ;catch(Exception e)System.out.println(异常异常产生:生: + e) ;范例范例ThrowDemo03.java206.4 本章小结本章小结1.异常是导致程序中断运行的一种指令流。当异常发生时,如果异常是导致程序中断运行的一种指令流。当异常发生时,如果 没有进行处理,程序将会中断执行。没有进行处理,程序将会中断执行。2.异常的最大父类是异常的最大父类是Throwable,分为两个子类,分别是,分为两个子类,分别是Error、 Exception。Exception表示程序可以处理的异常;而表示程序可以

22、处理的异常;而Error表表 示示JVM错误,错误, 一般不由程序开发人员处理。一般不由程序开发人员处理。3.异常可以使用异常可以使用trycatchfinally进行处理。在进行处理。在try语句中捕捉语句中捕捉 异常,然后在异常,然后在catch中处理异常,中处理异常,finally作为异常的统一出口作为异常的统一出口 ,不管是否发生异常都要执行,不管是否发生异常都要执行finally段代码。段代码。 4.异常也可以不处理,而是抛出。在方法声明处使用异常也可以不处理,而是抛出。在方法声明处使用throws,表,表 示该方法不处理异常,交给被调用处处理;使用示该方法不处理异常,交给被调用处处理;使用throw可以在可以在 方法中手动抛出一个异常。方法中手动抛出一个异常。21

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号