Java学习之异常处理

上传人:jiups****uk12 文档编号:53712686 上传时间:2018-09-04 格式:PPT 页数:39 大小:562KB
返回 下载 相关 举报
Java学习之异常处理_第1页
第1页 / 共39页
Java学习之异常处理_第2页
第2页 / 共39页
Java学习之异常处理_第3页
第3页 / 共39页
Java学习之异常处理_第4页
第4页 / 共39页
Java学习之异常处理_第5页
第5页 / 共39页
点击查看更多>>
资源描述

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

1、第7章 异常处理,本章主要讲述如下内容: 异常的层次结构; 异常处理语句; 自定义异常; 异常处理中常用的调试方法。,江西新华电脑学院,生活中的异常,正常情况下,小王每日开车去上班,耗时大约30分钟,但是,异常情况迟早要发生!,一路畅通,堵车!,撞车!,2,程序中的异常,public class TestException public static void main(String args) System.out.print(“请输入课程代号(1至3之间的数字):“); Scanner in = new Scanner(System.in); int courseCode = in.nex

2、tInt(); / 从键盘输入整数 switch (courseCode) case 1: System.out.println(“C#编程“); break; case 2: System.out.println(“Java编程“); break; ,输入:2 输出:Java编程,输入:B 程序中断运行!,正常情况:,异常情况:,3,什么是异常,异常就是在程序的运行过程中发生的不正常的事件,它会中断正在运行的程序,绕行或者等待,请求交警解决,异常!,面对异常该怎么办呢?通常情况下,我们会这样处理:,程序运行,程序中断运行,堵车!,撞车!,生活中,我们会根据不同的异常进行相应的处理,而不会就此

3、中断我们的生活,4,什么是异常处理,Java编程语言使用异常处理机制为程序提供了错误处理的能力,程序中预先想好了 对付异常的处理办法,异常!,程序运行,处理完毕,程序继续运行,对异常进行处理,5,简介,在Java中,提供了错误捕捉和处理机制,即异常处理机制。 在程序运行过程中发生错误时,Java允许其不按照正常路径完成任务,由发现错误的方法抛出封装了错误信息的对象(异常)到其调用程序,发出已经发生问题的信号,然后立即退出而且,程序并不在调用该方法的代码处继续执行,而是由异常处理机制开始搜索一个能够处理这种特定错误情况的异常处理器。,6,7.1 异常的层次结构,Throwable是异常类的根节点

4、,定义在java.lang包,它的子类也定义在该包中; Error代表系统错误类,由系统直接处理; Exception类及其子类是在程序中可捕捉到的异常。 见图7.1,7,声明抛出异常,Exception类有下面几个常用的构造方法:,9,7.1 异常的层次结构(续),1. java.lang.ArithmeticException0作除数(包括模),将产生这类异常。 例如:int x=0 , y;y=100/x ;,2. java.lang.ArrayIndexOutOfBoundsException例如:int a =new int10;a10=0;,10,7.1 异常的层次结构(续),3.

5、 java.lang.ArrayStoreException 例如:int a =new int10;boolean b =new boolean10;System.arraycopy(a,0,b,3,6); /有异常,4. java.lang.ClassCastException 例如: Object obj=new Object( ); int a =(int ) (obj);,11,7.1 异常的层次结构(续),5. java.lang.IndexOutOfBoundsException例如:char ch=“ABC“.charAt(99);注意: 2 是5的子类。,6. java.la

6、ng.NegativeArraySizeException例如:int a =new int-10;,12,7.1 异常的层次结构(续),7. java.lang.NullPointerException例如:int a =null ; System.out.print(a.length);,13,7.2 异常处理语句,缺省的异常处理的情况,例如:,public class DefaultException / 程序7-1public static void main(String args ) int a,b=0;a=2/b; / 此处有异常System.out.println(“a=”+a

7、); / 不运行此行 ,14,Java中如何进行异常处理,Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws,捕获异常,catch,try,finally,执行可能产生 异常的代码,捕获异常,无论是否发生异常, 代码总能执行,手动抛出异常,抛出异常,throw,声明异常,声明方法可能要 抛出的各种异常,throws,15,7.2 异常处理语句(续),异常处理语句有try、catch、finally、throw和throws。异常处理的形式为:,try程序执行体 catch(异常类型1 异常对象1)异常处理程序体1 catch(异常类型2

8、异常对象2)异常处理程序体2 finally 异常处理结束前的执行程序体 ,16,7.2.1 try和catch语句,try语句指明可能产生异常的代码段; catch语句在try语句之后,用于捕捉异常,一个try语句可以有多个catch语句与之匹配。 异常处理以后,程序从try语句代码段后继续执行。例如:程序7-2。,17,public class TryCatchTest / 程序7-2public static void main(String args ) int a=99,b=0,c;trySystem.out.println(“产生异常之前“);c=a/b; / 该行有异常Syste

9、m.out.println(“产生异常之后“);catch(ArrayIndexOutOfBoundsException e) System.out.println(“处理下标越界异常“);catch(ArithmeticException e) System.out.println(“处理算术异常“); System.out.println(“异常处理结束“); ,7.2.1 try和catch语句(续),注意:用catch语句捕捉异常时,若找不到相匹配的catch语句,将执行缺省的异常处理。例如:,int a=99,b=0,c; tryc=a/b; /产生的异常和捕捉的异常类型不一致cat

10、ch(ArrayIndexOutOfBoundsException e) System.out.println(“处理异常“);,19,7.2.1 try和catch语句(续),注意:当有多个catch语句时,系统依照先后顺序逐个检查 。例如:,tryc=a/b; catch(ArithmeticException e) System.out.println(“Divided by zero“); catch(RuntimeException e) System.out.println(“Divided by zero“); ,20,7.2.2 finally语句,无论是否产生异常,final

11、ly语句指明的代码一定被执行。例如:,public class testFinally / 程序7-3public static void main(String args ) int a,b=0;for(int i=0;i=3;i+)System.out.println(“Test No: “+(i+1);,21,tryswitch(i)case 0: a=3/b; break;case 1: int c =new int10;c10=0;break;case 2: char ch=“ABC“.charAt(99);break;case 3: return;,catch(Arithmetic

12、Exception e) System.out.println(“零作除数!”); catch(ArrayIndexOutOfBoundsException e) System.out.println(“数组下标越界!“); catch(IndexOutOfBoundsException e) System.out.println(“下标越界!“); finallySystem.out.println(“在finally块中!“); ,程序运行结果: Test No: 1零作除数!在finally块中! Test No: 2数组下标越界!在finally块中! Test No: 3下标越界!在

13、finally块中! Test No: 4在finally块中!,7.2.3 throw语句,throw语句用于指出当前行有异常,当程序执行到throw语句时,流程就转到相匹配的异常处理语句,所在的方法也不再返回值。throw语句可以将异常对象提交给调用者,以进行再次处理。例如:程序7-4。,25,public class ThrowException / 程序7-4public static void Test( ) tryint c =new int10;c10=0; catch(ArrayIndexOutOfBoundsException e) System.out.println(“t

14、 数组下标越界!“); throw e; / 抛出点/System.out.println(“t产生异常后!“); ,public static void main(String args ) tryTest( );catch(IndexOutOfBoundsException e) System.out.println(“t 下标越界!“);finallySystem.out.println(“t 在finally块中!“); ,程序运行结果: 数组下标越界! 下标越界! 在finally块中!,7.2.4 throws语句,throws语句指明方法中可能要产生的异常类型,由调用者进行异常处

15、理。例如:,28,import java.io.*; / 程序7-6 public class testThrows public static String readString( )throws IOExceptionint ch;String r=“;boolean done=false;while(!done)ch=System.in.read( );if(ch0 | ch=0xd) done=true;else r = r + (char) ch; return r;,注意,public static void main(String args ) String str;trystr=readString( );catch(IOException e)System.out.println(“产生了输出/输出异常“);return; System.out.println(“整数是:“+Integer.parseInt(str); ,7.2.4 throws语句(续),建议:在多人合作写程序时,一个方法中产生的异常,最好在该方法中进行处理,不要将异常传播给其他人处理。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

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