您好,欢迎访问三七文档
Java面向对象程序设计第五章异常处理2回顾•继承的概念及应用•父类与子类之间的互访•多态在Java中的使用及实现•了解什么是封装及访问修饰符的使用–public,private,protected,默认•方法修饰符–static–final–abstract•区分抽象类与接口3目标•理解异常的概念•运用try块、catch块和finally块处理异常•运用多重catch块处理异常•运用嵌套try/catch块处理异常•运用关键字throw和throws处理异常•了解用户自定义异常错误的种类•语法错误–由特定的语言编写的程序必须符合该语言的语法要求,否则在编译时会出错•运行时错误–语法没有问题,而是在程序运行时,由于程序员的操作,导致程序发生一些不可避免的错误,错误发生后,会造成程序无法继续运行而中断•逻辑错误–程序运行时不会报错,但是所得到的结果并非预想的结果,通常是由于程序结构或算法错误造成异常处理•Java异常是Java提供的用于处理程序中错误的一种机制•所谓错误是指在程序运行的过程中发生的一些异常事件,如除0溢出,数组下标越界,读取的文件不存在等等•设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果•Java程序的执行过程中如果出现异常,可以生成一个异常类对象,该对象封装了异常事件的信息并将被提交给Java运行时系统,这个过程称为抛出异常•当Java运行时系统接收到的异常对象时,会寻找能处理这一异常的代码,并把当前的异常对象交给其处理,这一过程称为捕获异常6ExceptionArithmeticExceptionNullPointerExceptionObjectThrowableErrorThreadDeathIOExceptionRuntimeExceptionNumberFormatException……异常类的层次结构•Throwable具有两个子类,它们是–Exception:所有异常类的父类,其子类包括了各种各样的异常,通常是程序员应当捕获的异常情况•RuntimeException:一类特殊的异常,如被0除,数组下标越界等等,产生比较频繁的异常,程序员可以对其处理,也可以不处理–Error:Error类的异常为内部错误,由Java虚拟机生成并抛出,因此程序员并不对该错误做处理AWTError7Java异常类文件结束EOFException找不到文件FileNotFoundExceptionI/O异常的根类IOException数字转化格式异常,比如字符串到float型数字的转换无效NumberFormatException不能加载所需的类ClassNotFoundException方法接收到非法参数IllegalArgumentException数组大小小于或大于实际的数组大小ArrayIndexOutOfBoundException尝试访问null对象成员NullPointerException许多java.lang异常的基类RuntimeException异常层次结构的根类Exception算术错误情形,如以零作除数ArithmeticException线程中断InterruptedException说明异常异常•为了使程序能够顺利的运行,需要在程序中容易出现异常的地方添加异常处理的代码•异常处理涉及的关键字:–try–catch–finally–throw–throws异常处理•Java中,用如下代码结构捕获和处理异常try{被监控的代码}catch(异常类型){异常处理代码}finally{终结处理代码}10例如:try{code1;}catch(Exceptione){code2;}finally{code3;}code4;在不发生异常的情况下,code1,code3,code4被执行;在可捕获异常的情况下,code2,code3,code4被执行;在不可捕获异常的情况下,执行code3后,程序终止。异常处理11try和catch块trycatch异常执行catch后程序继续正常运行程序控制引发代码块单元12try和catch块try和catch块的用法classExc2{publicstaticvoidmain(Stringargs[]){intd,a;try{d=0;a=42/d;System.out.println(Thiswillnotbeprinted.);}catch(ArithmeticExceptione){System.out.println(Divisionbyzero.);}System.out.println(Aftercatchstatement.);}}finally块•finally语句为异常处理提供了一个统一的出口,使得在控制流程转到程序的其他部分以前,能够对程序的状态作统一的管理•无论try所指定的程序块中是否抛出了异常,finally指定的代码都要被执行•通常在finally块中可以进行资源的清理工作,如–关闭打开的文件–删除临时文件–断开数据库的连接14finally块try块finally块catch块无异常异常try、catch和finally块的执行流程15显示异常的描述信息一般情况下用下面的方法来显示错误信息:catch(ArithmeticExceptione){System.out.println(“Eception:”+e)}catch(ArithmeticExceptione){System.out.println(“Eception:”+e.getMessage())}catch(ArithmeticExceptione){e.printStackTrace();}16异常处理块的一般形式try{//要监控错误的代码块methodGeneratingException();}catch(Exceptione){//Exceptione的异常处理程序}finally{//在try结束前要执行的代码块cleanup();}此处如果有多种异常,则采用多个catch语句17多重catch块•一段代码可能会生成多个异常•当引发异常时,会按顺序来查看每个catch语句,并执行第一个类型与异常类型匹配的语句•执行其中的一条catch语句之后,其他的catch语句将被忽略try{…….}catch(ArrayIndexOutOfBoundsExceptione){……}catch(Exceptione){……}18多重catch块•使用多重catch语句时,异常子类一定要位于异常父类之前try{…...}catch(Exceptione){……}catch(ArrayIndexOutOfBoundsExceptione){……}×嵌套try…catch块•如果在一个try块中出现了多个异常,则在遇到第一个异常时,将会抛出该异常并被捕获后处理,而后面的其他异常得不到处理,此时,可以采用嵌套try…catch块来实现处理多个异常•格式try{try{……}catch(){……}……}catch(){……}20使用throw和throws语句3throw异常引发的异常停止异常处理程序可执行程序语句语句1语句221手动引发异常指定由方法引发的异常tryfinallycatchthrowsthrow处理异常要监控的程序语句包含在此块中以合理的方式捕获和处理异常释放资源等22总结•理解异常的概念•运用try块、catch块和finally块处理异常•运用多重catch块处理异常•运用嵌套try/catch块处理异常•运用关键字throw和throws处理异常•了解用户自定义异常
本文标题:JAVA异常处理.
链接地址:https://www.777doc.com/doc-2881013 .html