java ——异常

上传人:豆浆 文档编号:3151063 上传时间:2017-07-30 格式:PPT 页数:33 大小:158.50KB
返回 下载 相关 举报
java ——异常_第1页
第1页 / 共33页
java ——异常_第2页
第2页 / 共33页
java ——异常_第3页
第3页 / 共33页
java ——异常_第4页
第4页 / 共33页
java ——异常_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《java ——异常》由会员分享,可在线阅读,更多相关《java ——异常(33页珍藏版)》请在金锄头文库上搜索。

1、第六章 异常处理与匿名类,7.1 异常处理 7.2 内部类与匿名类 ,异常处理,1 异常与异常类 2 异常类结构与组成 3 Exception类中的常用方法 4 系统定义的运行异常 5 抛出异常 6 捕捉异常,1 异常与异常类,异常(Exception)又称为错误、例外。是 封装了错误信息的对象。该对象可以由JVM产生、捕捉和处理。 异常与其他语言要素一样,是面向对象规范的一部分,是异常类的对象。异常的表现,异常的表现,死机数组越界除0空指针引用文件未发现网络忙打印机缺纸等等,2 异常与异常类,(1)Java异常类层次结构,若干常见的系统定义异常解释,(2)异常类定义解释,Throwable类

2、是类库java.lang包中的一个类,它派生了两个子类:Exception和Error。Error类由系统保留,Exception类供应用程序使用。Exception类的构造函数 public Exception( ); public Exception( String s ); 第二个构造函数可以接受字符串参数传入的信息,该信息通常是对该异常所对应的错误的描述。,Exception类的常用方法,public String toString ( )toString ( )方法返回描述当前Exception类信息的字符串。public void printStackTrace ( ) 打印输出当

3、前异常对象的堆栈使用轨迹public String getMessage() 打印错误信息,3 Java系统异常机制步骤,1、抛出异常2、捕捉异常3、处理异常,(1) 抛出异常,Java程序在运行时如果引发了一个可识别的错误,就会产生一个与该错误相对应的异常类的对象,这个过程被称为异常的抛出。根据异常类的不同,抛出异常的方法也不同。系统自动抛出的异常语句抛出的异常,(2)抛出异常,系统自动抛出的异常所有的系统定义的运行异常都可以由系统自动抛出。语句抛出的异常用户程序定义的异常不能自动抛出,须借助于throw语句来定义何种情况产生了异常,并抛出这个异常类的新对象。,(2)抛出异常,捕捉处理异常的

4、一般格式try /有异常抛出的语句组;catch ( 异常类名 异常对象形参)/异常处理语句组; finally /,(2)抛出异常,用throw语句抛出异常对象的语法格式修饰符 返回类型 方法名 (参数列表) throws 异常类列表/throw 异常对象;/,(3)捕捉异常,捕捉异常当一个异常被抛出时,有专门的语句来接收这个被抛出的异常对象,这个过程被称为捕捉异常。当一个异常类的对象被捕捉或接收后,用户程序就会发生流程的跳转,系统中止当前的流程而跳转至专门的异常处理语句块,或直接跳出当前程序和Java虚拟机回到操作系统。,(3)捕捉异常,异常对象是依靠以catch语句为标志的异常处理语句块

5、来捕捉和处理的。异常处理语句块(又称catch语句块)的格式 catch (异常类名 异常对象形参) /异常处理语句组;,(3)捕捉异常,每个catch语句块都应该与一个try语句块相对应。try语句块用来启动Java的异常处理机制,可能抛出异常的语句,包括throw语句、调用可能抛出异常方法的方法调用语句,都应该包含在这个try语句块中。,(3)捕捉异常,多异常的处理一个try块可能产生多种不同的异常,如果希望能采取不同的方法来处理这些异常,就需要使用多异常处理机制。多异常处理是通过在一个try块后面定义若干个catch块来实现的,每个catch块用来接收和处理一种特定的异常对象,每个cat

6、ch块都有一个异常对象作为参数。,(3)捕捉异常,多异常的处理一般格式try /有异常抛出的语句组;catch ( 异常类名1 异常形式参数名1)/异常处理语句组1; catch ( 异常类名2 异常形式参数名2)/异常处理语句组2; finally /无论有否异常,都应被执行的语句组;,(3)捕捉异常,当try块抛出一个异常时,程序的流程首先转向第一个catch块,并审查当前异常对象可否为这个catch块所接收。如果try块产生的异常对象被一个catch块所接收,则程序的流程将直接跳转到这个catch语句块中,语句块执行完毕后,执行finally块(如果有的话),try块中尚未执行的语句和其

7、他的catch块将被忽略;如果所有的catch块都不能与当前的异常对象匹配,则说明当前方法不能处理这个异常对象,程序流程将返回到调用该方法的上层方法。,(3)捕捉异常,如果这个上层方法中定义了与所产生的异常对象相匹配的catch块,流程就跳转到这个catch块中; 否则继续回溯更上层的方法。如果所有的方法中都找不到合适的catch块,则由Java运行系统来处理这个异常对象。一个异常对象能否被一个catch语句块所接收,主要看该异常对象与catch块的异常参数的匹配情况。,(3)捕捉异常,异常对象将被接收的条件(1) 异常对象与参数属于相同的异常类。(2) 异常对象属于参数异常类的子类。(3)

8、异常对象实现了参数所定义的接口。注:三个条件满足任何一个即被接受。假设try块中所有语句的执行都没有引发异常,则所有的catch块都会被忽略而不予执行。无论是否发生异常finally块都将被执行(如果有的话)。,(3)捕捉异常,在设计catch块处理不同异常时应注意的问题catch块中的语句应根据异常的不同而执行不同的操作。比较通用的操作是打印异常和错误的相关信息,包括异常名称、产生异常的方法名等。在处理多异常时应注意认真设计各catch块的排列顺序。一般地,处理较具体和较常见的异常的catch块应放在前面,与多种异常相匹配的catch块应放在较后的位置。,(3)捕捉异常,现阶段常用示意代码t

9、ry /有异常抛出的语句组;catch (Exception e ) e.printStackTrace ( ); System.out.println( e.toString ( ) ); System.out.println(e); System.out.println( “error in mymethod then what” ); ,返回,(3)异常应用例程,例2-4 AppLineInOut.java (p23)例2-5 AppNumInOut.java (p23)例6-1 ExceptionIndexOutof.java (p140)例6-2 ExceptionSimple.ja

10、va (p140),返回,7.2 内部类与匿名类,7.2.1 内部类7.2.2 匿名类,内部类,内部类是在其他类中的类内部类的定义和使用将类的定义置入一个用于封装它的类内部。内部类不能够与外部类同名。在封装它的类的内部使用内部类,与普通类的使用方式相同,在其他地方使用,类名前要冠以外部类的名字。,在用new创建内部类时,也要在 new前面冠以对象变量。例2-11 TestInnerUse.java (p128)内部类中可以直接访问外部类的其他域及方法。即使private也行。,1 内部类,如内部类中有与外部类同名的域或方法,可以用this来访问外部成员。例2-12 TestInnerThis.java (p129)在一个方法中也可以定义类。例2-14 TestInnerMethod.java (p132),1 内部类,匿名类是一种特殊的内部类,它没有类名,在定义类的同时就生成该对象的一个实例。匿名类的特点不取名字,直接用其父类或接口的名字类名前面不能够有修饰符。类中不能够定义构造方法。,2 匿名类,不使用class关键字。类的定义域创建该类的一个实例同时进行,即类的定义前面有一个new关键字。匿名类的定义与使用new 类名或接口名()/类的属性/类的方法/大多在GUI中使用例 5-15 TestInnerAnonymous.java (p133),2 匿名类,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

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