java面向对象程序设计第08章异常处理.ppt
《java面向对象程序设计第08章异常处理.ppt》由会员分享,可在线阅读,更多相关《java面向对象程序设计第08章异常处理.ppt(33页珍藏版)》请在三一办公上搜索。
1、信息类专业课程,西北农林科技大学,第八章 异常处理,导读,主要内容异常的含义及分类异常处理两种抛出异常的方式自定义异常常见异常难点自定义异常,1异常的含义所谓异常就是程序运行时可能出现一些错误,比如试图打开一个根本不存在的文件等2异常处理的必要性传统错误处理的不足之处,主要表现为:(1)程序复杂;(2)可靠性差;(3)返回信息有限;(4)返回代码标准化困难。Java语言采用错误代码和异常处理相结合的方式可以把错误代码与常规代码分开,也可以在catch中传播错误信息,还可以对错误类型分组。,一、异常的含义及分类,3异常的分类在java语言中,异常是一个对象,它继承于Throwable类,所有的T
2、hrowable类的子孙类所产生的对象都是例外(异常)。从Throwable直接派生出的异常类有 Exception 和 Error,如图6-1所示。,一、异常的含义及分类,图1 Java异常层次图,Throwable,一、异常的含义及分类,Exception 是代表了真正实际意义上的异常对象的根基类。Exception 和从它派生而来的所有异常都是应用程序能够捕获到的,并且可以进行异常错误恢复处理的异常类型。Error 则表示 出现了一个非常严重的异常错误,并且这个错误可能是应用程序所不能恢复的,例如 LinkageError,或 ThreadDeath 等。由Java虚拟机生成并抛出,Ja
3、va程序不做处理。和的子类免于编译时的检查。RuntimeException异常由系统检测,用户的Java 程序可不做处理,系统将它们交给缺省的异常处理程序。,一、异常的含义及分类,二、异常处理,2.1.异常处理的基本结构2.2.多个catch 块2.3.finally语句,2.1 异常处理的基本结构,1异常处理的定义异常处理是用户程序以预定的方式响应运行错误和异常的能力。它的基本方式是:当一个方法引发一个异常后,可将异常抛出,由该方法的直接或者间接调用者处理异常。2异常处理语句异常处理语句有try、catch、finally、throw和throws。在以下部分将逐一介绍这些语句的作用。,3
4、异常处理的基本结构try catch结构是异常处理的基本结构。这种结构中可能引发异常的语句封入在try块中,而处理异常的相应语句封入在catch块中。结构的格式如下:,2.1 异常处理的基本结构,try 程序执行体 catch(异常类型1 异常对象1)异常处理程序体1 catch(异常类型2 异常对象2)异常处理程序体2 catch(异常类型n 异常对象n)异常处理程序体nfinally 异常处理结束前的执行程序体/不论发生什么异常(或者不发生任何异常),都要执行的部分;,2.1 异常处理的基本结构,说明:(1)try语句指明可能产生异常的代码段;(2)catch语句在try语句之后,用于捕捉
5、异常,一个try语句可以有多 个catch语句与之匹配。当有多个catch语句时,系统依照先后顺 序逐个检查。用catch语句捕捉异常时,若找不到相匹配的catch 语句,将执行缺省的异常处理。(3)将catch程序块的参数不能设置成多个,一个catch只有一个参数.(4)若两个catch程序块(均和某个try程序块有关)都用于捕捉同一类 型异常,那么将产生语法错误。(5)若某一类型异常,可能有几个异常处理程序与他相匹配,那么执行 first相匹配的异常处理程序(6)java中可以使用嵌套的trycatch结构。在使用嵌套的try块时,将先执行内部try块,如果没有遇到匹配的catch块 则将
6、检查外部 try块的catch块。,2.1 异常处理的基本结构,throw语句 用于指出当前现有异常,当程序执行到throw语句时,流程就转到相匹配的异常处理语句,所在的方法也不再返回值。throw语句可以将异常对象提交给调用者,以进行再次处理。throws语句指明方法中可能要产生的异常类型,由调用者进行异常处理。,2.1 异常处理的基本结构,2.2 多个catch 块,单个try块能有许多catch块,当try块有可以引起不同类型异常的语句时,多个catch块是必须的。,【实例2】public class TryCatchpublic static void main(String args
7、)int a=0,0;int num=1,result=0;try result=num/0;System.out.println(num/a2);catch(ArithmeticException e)System.out.println(Errore);catch(ArrayIndexOutOfBoundsException e)System.out.println(Errore);catch(Exception e)System.out.println(Some other error:);,2.2 多个catch 块,2.3 finally语句,finally语句可以和try语句一起使
8、用,无论是否出现异常,finally语句指明的代码一定被执行。一个异常处理程序只有一个finally块,但并不强制必须要有finally块。有时,必需处理某些语句(如文件关闭操作),不管异常是否发生,都必须执行。此时,虽然能够在try和catch块放置代码以结束文件,但是为了避免重写代码,可以把代码放在 finally块。有时候我们希望某些语句在发生异常时也能执行,以释放外部资源或者关闭一个文件,这时可以用finally 语句来实现。,【实例3】import.*;import java.io.*;class withoutFinallyExample public void foo()thro
9、ws IOException/在空闲的端口上创建一个套接字 ServerSocket ss=new ServerSocket(0);try Socket socket=ss.accept();/此处的其他代码.catch(IOException e)ss.close();/label1 throw e;/.ss.close();/label2,2.3 finally语句,【实例3】问题上述代码没有finally块,程序中创建了一个套接字,并调用 accept 方法。在退出该方法之前,必须关闭此套接字,以避免资源漏洞。为此,在/label2处调用 close来关闭此套接字,此语句为该方法的最后一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 面向 对象 程序设计 08 异常 处理

链接地址:https://www.31ppt.com/p-5436254.html