第11章异常处理.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:31 大小:1.1MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

第11章异常处理.ppt

第11章异常处理.ppt

预览

免费试读已结束,剩余 21 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

11.1Java异常处理机制11.1.1异常处理机制的结构Java中引入了异常和异常类,并且定义了很多异常类。每个异常类代表一类运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当Java程序运行过程中发生一个可识别的运行错误时,系统都会产生一个相应异常类的对象,并由系统中相应的机制来处理,以确保不会产生死机、死循环或其他对操作系统有损害的结果,从而保证了整个程序运行的安全性。图11.1异常处理机制结构在Java程序中,当程序运行过程中发生异常时,可采用如图11.1所示的两种方式处理异常:一是由Java异常处理机制的预设处理方法来处理,即一旦程序发生异常,程序就会被终止并显示一些错误信息给用户;二是使用Java语言提供的try-catch-finally语句自行处理异常。这种方式的优点很多,其中最主要的优点是将处理异常的代码与程序代码的主线分离开来,增强了程序的可读性;其次是可减少中途终止程序运行的可能性。【示例程序c11_1.java】系统自动抛出异常。publicclassc11_1{publicstaticvoidmain(String[]args){inta,b,c;a=67;b=0;c=a/b;System.out.println(a+"/"+b+"="+c);}}运行结果:Exceptioninthread"main"java.lang.ArithmeticExcption:/byzeroAtc11_1.main(c11_1.java:8)11.1.2异常类的继承关系在Java语言中所有的异常类都继承自java.lang.Throwable类。Throwable类有两个直接子类:一个是Error子类,它包含Java系统或执行环境中发生的异常,这些异常是用户无法捕捉到的异常;另一个是Exception类,它包含了一般性的异常,如I/O异常,SQL异常,这些异常是用户可以捕捉到的异常,可以通过产生它的子类来创建自己的异常处理。下面分别论述。2.java.io包中的异常3.java.awt包中的异常4.java.net包中的异常5.系统定义的运行异常Exception类6.系统定义的运行异常Error类系统定义的运行异常Error类中,除AWTError类是在java.awt包中外,其余的全部在java.lang包中。java.lang包中的Error类如下:11.2Java的异常处理语句图11.3try-catch-finally结构try-catch-finally组合语句用来实现抛出异常和捕获异常的功能。其格式如下:try{statements//可能发生异常的程序代码}catch(ExceptionType1ExceptionObject){ExceptionHandling//处理异常的程序代码1}catch(ExceptionType2ExceptionObject){ExceptionHandling//处理异常的程序代码2}…finally{FinallyHandling//无论是否发生异常都要执行的程序代码}其中:(1)try:将可能出现错误的程序代码放在try块中,对try块中的程序代码进行检查,可能会抛出一个或多个异常。因此,try后面可跟一个或多个catch。(2)catch:其功能是捕获异常,参数ExceptionObject是ExceptionType类的对象,这是由前面的try语句生成的。ExceptionType是Throwable类中的子类,它指出catch语句中所处理的异常类型。catch捕获异常的过程中,要将Throwable类中的异常类型和try语句抛出的异常类型进行比较,若相同,则在catch中进行处理。(3)Finally:是这个组合语句的统一出口,一般用来进行一些“善后”操作,例如释放资源、关闭文件等。它是可选的部分。【示例程序c11_2.java】使用try-catch-finally语句自行处理异常。publicclassc11_2{publicstaticvoidmain(Stringargs[]){inta,b,c;a=67;b=0;try{intx[]=newint[-5];c=a/b;System.out.println(a+"/"+b+"="+c);}catch(NegativeArraySizeExceptione){System.out.println("exception:"+e.getMessage());e.printStackTrace();}catch(ArithmeticExceptione){System.out.println(