《JAVA编程基础-07异常处理-.doc》由会员分享,可在线阅读,更多相关《JAVA编程基础-07异常处理-.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java编程基础 异常处理3 Sept. 2008 Neusoft Confidential第七章 异常处理目标:介绍Java中的异常处理机制。通过本课的学习,学员应该掌握如下知识:1)异常有关类的继承关系,2) Java异常处理机制。3)关键字finally、throws及throw教学方法:讲授ppt上机练习本章要点异常简介异常的定义异常类的继承关系检查性异常非检查性异常异常处理机制try、catch、finally语句throw、throws关键字自定义异常类Contents1234异常简介异常类的继承关系异常处理机制自定义异常异常简介异常的定义运行期间出现的错误,而不是编译时的语法错误
2、例如,打开一个不存在的文件网络连接中断操作数组越界等异常简介异常的定义示例ArrayException.javapublic class excption_sample public static void main(String args )int i = 0;String greetings = Hello World,Hello Dingdang,Hello Kitty;while(i4)System.out.println(greetingsi);i+;数组越界异常Contents1234异常简介异常类的继承关系异常处理机制自定义异常异常的分类异常类的体系结构可处理,可不处理异常的分类
3、异常的分类示例:CheckException.java检查性异常(checked exception)若系统运行时可能产生该类异常,则必须写出相应的处理代码,否则无法通过编译非RuntimeException异常非检查性异常(unchecked exception)若系统运行时可能产生该类异常,则不必在程序中声明对该类异常的处理,就可以编译执行RuntimeException:运行时异常异常的分类常见的异常及其分类非检查性异常说明RuntimeExceptionjava.lang包中多数异常的基类ArithmeticException算术错误,如除以 0IllegalArgumentExcep
4、tion方法收到非法参数ArrayIndexOutOfBoundsException数组下标出界NullPointerException试图访问 null 对象引用异常的分类常见的异常及其分类检查性异常说明ClassNotFoundException无法找到想要创建对象的类文件IOExceptionI/O 异常的根类FileNotFoundException不能找到文件EOFException文件结束IllegalAccessException对类的访问被拒绝NoSuchMethodException请求的方法不存在InterruptedExceptionp p线程中断Contents1234
5、异常简介异常类的继承关系异常处理机制自定义异常异常处理机制异常的处理过程抛出异常捕获异常处理异常在Java程序执行过程中如果出现异常事件,系统会发出异常报告,这时系统将生成一个异常类对象,异常类对象封装了异常事件的信息并将其提交给Java运行时系统JJava 中可用于处理异常的两种方式:自行处理:可能引发异常的语句封入在 try 块内,而处理异常的相应语句则封入在 catch 块内。回避异常:在方法声明中包含 throws 子句,通知潜在调用者,如果发生了异常,必须由调用者处理。tryycatch语句trycatch语句public class excption_sample public s
6、tatic void main(String args )int i = 0;String greetings = Hello World,Hello Dingdang,Hello Kitty;trywhile(i4)System.out.println(greetingsi);i+;catch(ArrayIndexOutOfBoundsException e)System.out.println(“数组越界异常”);try表示可能发生异常的语句catch( )内的参数异常类对象的声明catch内的语句是对异常的处理tryycatch语句trycatch语句catch块,是用来捕获并处理try
7、块抛出的异常的代码块。没有try块,catch块不能单独存在。我们可以有多个catch块,以捕获不同类型的异常如果程序抛出多个不同类型的异常,我们需要多个catch()语句来处理。和特殊异常类相关联的catch()块必须写在和普通异常类相关联的catch()之前。try和catch( )之间不可以添加任何代码tryycatch语句Exceptiontrycatch语句示例Exception_sample_2.javaRuntimeExceptionArraycatch (ArrayIndexOutOfBoundsException e) System.out.println(“Out of B
8、ounds!”); catch (RuntimeException e) IndexOutOfBoundsExceptionSystem.out.println(“Runtime Exception!”);catch (Exception e) System.out.println(println(“Exception!”); if caught, do thisif caught, do thisif caught, do this异常处理机制 练习以下代码的执行结果是:A. finishedB.ExceptionC.编译错误 D. Arithmetic Exception答案 :Cfina
9、llyy 语句finally 语句finally语句放在try catch语句后fianlly语句中的代码块不管异常是否被捕获总是要执行通常在finally语句中可以进行资源的清除操作,如:关闭打开文件、删除临时文件对应finally代码中的语句,即使try代码块和catch代码块中使用了return语句退出当前方法或break跳出某个循环,相关的finally代码块都有执行。当try或catch代码块中执行了System.exit(0)时,finally代码块中的内容不被执行finallyy 语句finally 语句示例Exception_Sample_3.javacatch (ArrayI
10、ndexOutOfBoundsException e) System.out.println(“Out of Bounds!”);return;catch (RuntimeException e) System.out.println(“Runtime Exception!”);catch (Exception e) System.out.println(println(“Exception!”); finallySystem.out.println(“program is running intofinally!”);无论是否捕获异常,系统都会执行该语句finallyy 语句 练习以下代码的
11、执行结果是:A.B.C.D.BDBCDBDEBCDE答案 :Cthrows关键字throws关键字示例Exception_sample_4.java如果一个方法中的语句执行时可能生成某种异常,但是并不能确定如何处理,则可以在程序所在的函数声明后,使用throws关键字抛出异常class ThrowsDemopublic void proc( ) throws IOExceptionSystem.out.println(inside proc);位置:函数参数列表的后面throws关键字后面,可以跟多个异常,中间用逗号分割throws关键字抛出的异常,由调用该函数的函数处理。throw语句thr
12、ow语句异常是通过关键字 throw 抛出,程序可以用throw语句引发明确的异常。如:void doA() throws Exception1 try catch(Exception1 e) throw e; catch(Exception2 e) System.out.println(出错了);throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。不能单独使用,要么和try. catch一起使用,要么和throws一起使用。throw语句的操作数一定是Throwable类类型或Throwable子类类型的一个对象Contents1234异常简介异常类的继承关系异常处理机制自定义异常自定义异常类自定义异常类如果Java提供的异常类型不能满足程序设计的需要,我们可以定义自己的异常类型。用户自定义的异常类应为 Exception 类(或者Exception 类的子类)的子类示例DevideByMinusException.javaDevideMath.javaTest.java小结异常简介异常的定义异常类的继承关系检查性异常非检查性异常异常处理机制try、catch、finally语句throw、throws关键字自定义异常类