JavaSE6异常处理

上传人:cl****1 文档编号:568828335 上传时间:2024-07-27 格式:PPT 页数:21 大小:1.40MB
返回 下载 相关 举报
JavaSE6异常处理_第1页
第1页 / 共21页
JavaSE6异常处理_第2页
第2页 / 共21页
JavaSE6异常处理_第3页
第3页 / 共21页
JavaSE6异常处理_第4页
第4页 / 共21页
JavaSE6异常处理_第5页
第5页 / 共21页
点击查看更多>>
资源描述

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

1、JavaSE异常处理异常处理提提纲纲Content目标v异常的概念异常的概念v异常的处理机制异常的处理机制v异常的分类异常的分类v异常的捕获和处理异常的捕获和处理v自定义异常自定义异常Java高端培训高端培训2异常的概念v异常是程序在异常是程序在运行期运行期发生的不正常的事件,它会打断指令的发生的不正常的事件,它会打断指令的正常执行流程。正常执行流程。v设计良好的程序应该在异常发生时提供处理这些不正常事件设计良好的程序应该在异常发生时提供处理这些不正常事件的方法,使程序不会因为异常的发生而阻断或产生不可预见的方法,使程序不会因为异常的发生而阻断或产生不可预见的结果。的结果。vJava语言使用异

2、常处理机制为程序提供了异常处理的能力语言使用异常处理机制为程序提供了异常处理的能力Java高端培训高端培训publicclassTestExceptionpublicstaticvoidmain(Stringargs)Stringfriends=lisa,bily,kessy;for(inti=0;i5;i+)System.out.println(friendsi);3异常处理机制vJava程序在执行过程中如果出现异常,会程序在执行过程中如果出现异常,会自动生成一个异自动生成一个异常类对象常类对象,该异常对象将被自动提交给,该异常对象将被自动提交给JVM,这个过程称为,这个过程称为抛出抛出(t

3、hrow)异常。异常。v当当JVM接收到异常对象时,会寻找能处理这一异常的代码并接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获把当前异常对象交给其处理,这一过程称为捕获(catch)异异常和处理异常。常和处理异常。v如果如果JVM找不到可以捕获异常的代码,则运行时系统将终止,找不到可以捕获异常的代码,则运行时系统将终止,相应的相应的Java程序也将退出。程序也将退出。Java高端培训高端培训4异常分类图Java高端培训高端培训5ArithmeticExceptionNullPointerExceptionExceptionClassCastExcept

4、ionObjectThrowableErrorThreadDeathSQLExceptionRuntimeExceptionArrayIndexOutOfBundsExceptionIOExceptionAWTErrorClassNotFoundException非受检异常受检异常异常的分类vJava程序运行过程中所发生的异常事件可分为两类:程序运行过程中所发生的异常事件可分为两类:错误(Error):JVM系统内部错误或资源耗尽等严重情况属于JVM需要负担的责任这一类异常事件无法恢复或不可能捕获,将导致应用程序中断。异常(Exception):其它因编程错误或偶然的外在因素导致的一般性问题。

5、这类异常得到恰当的处理时,程序有机会恢复至正常运行状况。v程序员通常只能处理异常程序员通常只能处理异常(Exception),而对错误而对错误(Error)无能为力。无能为力。Java高端培训高端培训6异常的分类v从编程角度分:从编程角度分:非受检(unchecked)异常:编译器不要求强制处置的异常。一般是指编程时的逻辑错误。是程序员应该积极避免其出现的异常及它的子类都是非受检异常:错误的类型转换:数组下标越界:空指针访问:算术异常(除0溢出):受检(checked)异常:编译器要求必须处置的异常。指的是程序在运行时由于外界因素造成的一般性异常。没有找到指定名称的类:java.lang.Cl

6、assNotFoundException访问不存在的文件:java.io.FileNotFoundException操作文件时发生的异常:操作数据库时发生的异常:Java高端培训高端培训7异常处理举例Java高端培训高端培训publicclassTestExceptionpublicstaticvoidmain(Stringargs)Stringfriends=lisa,bily,kessy;tryfor(inti=0;i5;i+)System.out.println(friendsi);catch(ArrayIndexOutOfBoundsExceptione)System.out.prin

7、tln(发生异常,请稍后再试.);8异常捕获和处理try. /可能产生异常的代码catch(ExceptionName1e). /异常的处理代码catch(ExceptionName2e). /异常的处理代码finally./无论如何都会执行的语句vtry 代码段包含的是可能产生异代码段包含的是可能产生异常的代码常的代码vtry 代码段后跟一个或多个代码段后跟一个或多个catch代码段。代码段。(或跟一个或跟一个finally代码段代码段)v每个每个catch代码段只声明一种其代码段只声明一种其能处理的特定类型的异常,并提能处理的特定类型的异常,并提供处理的方法。供处理的方法。v当异常发生时,

8、程序会中止当前当异常发生时,程序会中止当前的流程去执行相应的的流程去执行相应的catch代码代码段。段。vfinally段的代码无论是否发生段的代码无论是否发生异常都执行。异常都执行。Java高端培训高端培训9异常捕获和处理vtry语句语句try语句包含了一段代码,这段代码就是一次捕获并处理异常的范围。在执行过程中,该段代码可能会产生并抛出一种或几种类型的异常对象,它后面的catch语句要分别对这些异常做相应的处理。Java高端培训高端培训10异常捕获和处理vcatch语句语句在catch语句块中是对异常进行处理的代码,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类

9、型的异常对象。在catch中声明的异常对象(catch(ExceptionNamee))封装了异常事件发生的信息,在catch语句块中可以使用这个对象的一些方法获取这些信息。如:getMessage()方法,用来获得有关异常事件的字符串信息。printStackTrace()方法,用来跟踪异常事件发生时执行堆栈的内容。使用多重catch语句时,异常子类一定要位于异常父类之前。如果没有异常产生,所有的catch段的代码都会被忽略不执行。Java高端培训高端培训11异常的捕获和处理vfinallyfinally语句为异常处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作

10、统一的管理。无论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。通常在finally语句块中可以进行资源的清理工作,如:关闭打开的文件删除临时文件关闭数据库的连接等vfinally语句是可选的。语句是可选的。Java高端培训高端培训12示例Java高端培训高端培训publicclassTestException2publicintcalculate(intnum1,intnum2)intresult=num1/num2;returnresult;publicstaticvoidmain(Stringargs) TestException2test=newTestExce

11、ption2(); tryinti=test.calculate(100,10);System.out.println(i); catch(Exceptione)System.out.println(父类异常.); catch(ArithmeticExceptione)/错误不能到达的代码Sysetm.out.println(出异常啦);e.printStackTrace(); finallySystem.out.println(“finally语句块是始终要执行的);13使用throw和throwsvthrow关键字用在方法代码中主动抛出一个异常。关键字用在方法代码中主动抛出一个异常。如果方

12、法代码中自行抛出的异常是受检异常,则这个方法要用throws关键字声明这个异常。vthrows用来声明一个方法可能会抛出的所有异常。跟在方用来声明一个方法可能会抛出的所有异常。跟在方法签名的后面。法签名的后面。如果一个方法声明的是受检异常,则在调用这个方法之处必须处置这个异常(谁调用谁处理)显示捕获这个异常。继续用throws向上声明。v注:重写一个方法时,它所声明的异常范围不能被扩大。注:重写一个方法时,它所声明的异常范围不能被扩大。Java高端培训高端培训14示例Java高端培训高端培训importjava.io.*;importjava.sql.*;classEpublicStringc

13、reateArray(intlength)/error!f(length0)thrownewException(数组长度小于0,不合法);elsereturnnewStringlength;publicvoidtest()createArray(10);publicvoidreadFile()throwsIOException,SQLException/*classEEextendsEpublicvoidreadFile()throwsException*/publicclassTestException3publicstaticvoidmain(Stringargs)15自定义异常v创建自定

14、义异常创建自定义异常继承自Exception或其子类。习惯上包装一下父类的构造方法。v使用自定义异常使用自定义异常Java高端培训高端培训publicclassMyExceptionextendsExceptionpublicMyException()super();publicMyException(Stringmsg)super(msg);publicMyException(Throwablecause)super(cause);publicMyException(Stringmsg,Throwablecause)super(msg,cause);publicStringcreateArr

15、ay(intlength)throwsMyExceptionif(length0)thrownewMyException(数组长度小于0,不合法);returnnewStringlength;16异常实践v观察抛出的异常的名字和行号很重要。观察抛出的异常的名字和行号很重要。v调用调用JDK提供的类的方法前,阅读其提供的类的方法前,阅读其API文档了解它可能会文档了解它可能会产生的异常。然后再据此决定自己是应该处理这些异常还是产生的异常。然后再据此决定自己是应该处理这些异常还是将其加入将其加入throws列表。列表。应捕获和处理那些已知如何处理的异常,而传递那些不知如何处理的异常。v尽量减小尽量

16、减小try语句块的体积。语句块的体积。v在处理异常时,应该打印出该异常的堆栈信息以方便调试。在处理异常时,应该打印出该异常的堆栈信息以方便调试。Java高端培训高端培训17练习Java高端培训高端培训publicclassTestExpublicstaticinttest(intx)inti=1;trySystem.out.println(try块中10/x之前);i=10/x;System.out.println(try块中10/x之后);returni;catch(Exceptione)i=100;System.out.println(catch块中.);finallyi=1000;Sys

17、tem.out.println(finally块);returni;publicstaticvoidmain(Stringargs)System.out.println(TestEx.test(1);System.out.println(TestEx.test(0);18总结v异常分类图异常分类图vtry、catch、finallyvthrow、throwsv自定义异常自定义异常Java高端培训高端培训19eclipse debugvdebug: 调试是程序员编码过程中找逻辑错误的一个很重要调试是程序员编码过程中找逻辑错误的一个很重要的手段的手段v断点:遇到断点,暂挂,等候命令断点:遇到断点,暂挂,等候命令vdebug as Java Applicationv快捷键快捷键F5:单步跳入。进入本行代码中执行F6:单步跳过。执行本行代码,跳到下一行F7:单步返回。跳出方法F8:继续。执行到下一个断点,如果没有断点了,就执行到结束Ctrl+R:执行到光标所在的这一行20Java高端培训高端培训

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

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

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