第七章 JAVA异常处理.ppt
《第七章 JAVA异常处理.ppt》由会员分享,可在线阅读,更多相关《第七章 JAVA异常处理.ppt(59页珍藏版)》请在三一办公上搜索。
1、第七章 JAVA异常处理,7.1异常简介,openFiles;if(theFilesOpen)determine the lenth of the file;if(gotTheFileLength)allocate that much memory;if(gotEnoughMemory)read the file into memory;if(readFailed)errorCode=-1;else errorCode=-2;else errorCode=-3;else errorCode=-4;else errorCode=-5;,缺点?程序的可读性差,维护困难。如何更改?在面向对象的编程语
2、言中,用异常处理机制来统一处理错误。,7.1异常简介,tryopenTheFile;determine its size;allocate that much memory;closeTheFile;catch(fileopenFailed)dosomething;catch(sizeDetermineFailed)dosomething;catch(memoryAllocateFailed)dosomething;catch(readFailed)dosomething;catch(fileCloseFailed)dosomething;,1.什么是异常?异常是指程序在执行过程中出现程序本身
3、没有预料到的情况,从而导致程序错误地结束。2.什么是异常处理机制?在程序运行过程中发生错误时,允许不按照正常的路径完成任务,防止错误进一步恶化。3.异常处理过程?异常是一个对象,它在程序运行时创建,并在发生错误的位置被抛出(throw),由一定的接收机制来接收并处理。,7.1异常简介,4.异常对象 异常对象是某个异常类的实例,JAVA中已定义许多异常类,并允许程序员自己创建。每种异常类对应某一种或一类错误。5.异常与if语句的区别 跳转语句可能有足够的信息指示在碰到某种问题时该如何解决,而异常必须将问题提交给一个更高级的负责人。,7.1异常简介,6.为什么要有异常处理机制?例如除法,知道有零分
4、母的情况下,可以直接使用if语句判断,但若分母是一个比较复杂计算的结果,难以预料,此时可以用异常处理。,7.1异常简介,1.JAVA异常处理机制JAVA的异常处理机制由try和catch引导,结构如下:,7.2异常处理,try 可能产生异常的代码段;catch(异常类名1 对象名1)异常处理语句1 catch(异常类名2 对象名2)异常处理语句2,2.try语句 try语句是用来包含有可能抛出异常的程序段,可以是几个简单的语句,也可以是方法的调用。如:,7.2异常处理,try function();,try int i=0;for(i=0;i100;i+),2.catch语句 catch块是专
5、门用来捕获异常的地方。try中的程序段一旦遇到异常情况,则会转到异常控制器catch.catch的结构如下:,7.2异常处理,catch(异常类名 异常形式参数名)异常处理语句组;,3.执行过程 执行时,程序用作为catch参数的异常类与try块中产生的异常对象比较,如果是该类的对象,就执行该catch语句块,否则转到下一个catch语句块,7.2异常处理,JAVA中的异常类主要来源于派生自Object类的Throwable类,该类结构如下:,7.2.1异常分类,主要方法:(1)getMessage():用来返回用带参数的构造函数创建异常时的参数内容。(2)toString():用来返回异常所
6、属的异常类名及getMessage()能得到的内容。(3)printStackTrace():在标准输出设备上打印出堆栈使用轨迹,即异常发生时已经使用了哪些类。(4)fillInStackTrace():在异常重新抛出时使用。,7.2.1异常分类,7.2.1异常分类,ArithmeticException,ArrayStoreException,Arr,ClassNotFoundException,IllegalMonitorException,NegativeArraySizeException,NullPointerException,OutOfMemoryException,IndexO
7、utOfBoundsException,IOException,类名,除数为0引起的异常,数组空间不够引起的异常,未找到指定名字的类或接口引起的异常,监控器状态出错,数组长度是负数,程序试图访问空对象中的元素,系统无法分配内存引起异常,数组下标越界,文件未找到其它读文件异常,异常处理,常见异常处理,1.概念 JAVA程序在运行时如果引发了一个可识别的错误,就会产生一个与该错误相对应的异常类的对象,这个过程称为异常的抛出。2.抛出异常的方法(1)系统自动抛出的异常 所有的系统定义的运行异常都可以由系统自动抛 出。,7.2.2抛出异常,除0错误引起的异常,7.2.2抛出异常,public stat
8、ic void main(String a)int a=0,b=5;System.out.print(b/a);,(2)语句抛出的异常 用户程序自定义的异常不可能依靠系统自动抛出,因为系统不知道错误在哪里。此时,必须借助于throw语句抛出异常。语法格式:修饰符 返回类型 方法名(参数列表)throws 异常类名列表,7.2.2抛出异常,使用throw语句抛出异常时应该注意的问题:一般这种抛出异常的语句应该被定义为在满足一定条件时执行,例如把throw定义在if语句分支中。含有throw语句的方法,应该在方法头定义中增加如下部分:throws 异常类名列表,7.2.2抛出异常,7.2.2抛出异
9、常,class JavaThrow public static void main(String args)try throw new ArithmeticException();catch(ArithmeticException ae)System.out.print(ae);,人为抛出异常例,人为抛出异常例,int deQueue()throws EmptyQueueException int data;if(isEmpty()throw(new EmptyQueueException(this);else dosomething;,7.2.2抛出异常,人为抛出异常的作用?很多时候是可以预
10、见异常的发生的,这时人为抛出异常,可使程序的逻辑清晰,功能正确。,7.2.2抛出异常,JAVA中异常处理结构:,7.3捕获异常,try 可能产生异常的代码段;catch(异常类名1 对象名1)异常处理语句1 catch(异常类名2 对象名2)异常处理语句2,当程序产生异常,就应捕获它,并进行处理,处理过程由catch语句块给出。,例子:,public class JavaThrow public static void main(String args)try throw new Throwable(Heres the Throwable);catch(Throwable e)System.o
11、ut.println(Caught Throwable);System.out.println(e.getMessage:+e.getMessage();System.out.println(e.toString:+e.toString();,注意:如果在使用能够产生异常的方法而没有捕获和处理,将不能通过编译。捕获的异常类型应该和抛出的异常类型相同,当然也可以用其父类。当满足下面三个条件之一,异常对象将被吸收:异常对象为catch参数指定的异常类的对象异常对象为catch参数指定的异常类的子类对象异常对象是实现了catch参数指定的接口的类对象,7.3.1捕获异常,因此,不能确定抛出的异常类型
12、时,可以用Exception类。例:,7.3.1捕获异常,public static void main(String args)try throw new IOException();catch(Exception e)System.out.print(caught the exception);,JAVA中经常出现的3种异常:算术异常、字符串越界和数组越界。例:,7.3.1捕获异常,public class JavaThrow public static void main(String args)char c;int a,b=0;int array=new int7;String s=H
13、ELLO;,7.3.1捕获异常,try a=1/b;catch(ArithmeticException ae)System.out.println(catch+ae);try array8=0;catch(ArrayIndexOutOfBoundsException ai)System.out.println(catch+ai);try c=s.charAt(8);catch(StringIndexOutOfBoundsException se)System.out.print(catch+se);,有时希望把刚捕获的异常重新抛出,尤其是在使用Exception捕获所有异常的时候,既然已经得到
14、了对当前异常对象的引用,可以直接把它重新抛出:,7.3.2重新抛出异常,public class JavaThrow public static void F()throws Exception System.out.println(the original exception in F();throw new Exception(thrown from F();,public static void main(String args)throws Exception try F();catch(Exception e)System.out.println(caught in main);th
15、row e;,7.3.2重新抛出异常,the original exception in F()caught in mainException in thread main java.lang.Exception:thrown from F()at JavaThrow.F(JavaThrow.java:7)at JavaThrow.main(JavaThrow.java:12)重新抛出一个异常将进入上一级结构的异常控制器中,这一层控制器后的catch将被忽略。被再次抛出的异常保留原异常的有关信息,上一层控制器可以从那个对象提取所有信息。,7.3.2重新抛出异常,与异常的起源地对应,而不是重新抛
16、出它的位置对应,7.3.2重新抛出异常,public class JavaThrow public static void F()throws Exception System.out.println(origin+the exception in F();throw new Exception(thrown from F();,public static void G()throws Throwable try F();catch(Exception e)System.out.println(Inside G(),+e.printStackTrace():);e.printStackTrac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七章 JAVA异常处理 第七 JAVA 异常 处理
链接地址:https://www.31ppt.com/p-2314546.html