scjp认证第八讲课件

上传人:我*** 文档编号:142133126 上传时间:2020-08-17 格式:PPT 页数:29 大小:106KB
返回 下载 相关 举报
scjp认证第八讲课件_第1页
第1页 / 共29页
scjp认证第八讲课件_第2页
第2页 / 共29页
scjp认证第八讲课件_第3页
第3页 / 共29页
scjp认证第八讲课件_第4页
第4页 / 共29页
scjp认证第八讲课件_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《scjp认证第八讲课件》由会员分享,可在线阅读,更多相关《scjp认证第八讲课件(29页珍藏版)》请在金锄头文库上搜索。

1、第八章,Java异常和断言,2,本课内容(考点),Java异常的概念和处理机制 Java异常的分类 异常的捕获、处理和抛出 使用用户自定义异常 断言,3,Java异常(考点),Java程序运行过程中所发生的异常事件可分为两类: 错误(Error):JVM系统内部错误、资源耗尽等严重情况 违例(Exception): 其它因编程错误或偶然的外在因素导致的一般性问题,例如: 对负数开平方根 空指针访问 试图读取不存在的文件 网络连接中断,4,Java异常举例(1),public class Test12_1 public static void main(String args) String f

2、riends=lisa,bily,kessy; for(int i=0;i5;i+) System.out.println(friendsi); System.out.println(nthis is the end); ,5,Java异常举例(2),程序Test12_1运行结果:java Test12_1 lisa bily kessy Exception in thread main java.lang.ArrayIndexOutOfBoundsException at Test12_1.main(Test12_1.java:5) Press any key to continue.,6,

3、Java异常类层次,7,常见异常(考点),RuntimeException 错误的类型转换 数组下标越界 空指针访问 IOExeption 从一个不存在的文件中读取数据 越过文件结尾继续读取 连接一个不存在的URL,8,异常处理机制(考点),Java程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。 当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。 如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也

4、将退出。 程序员通常只能处理违例(Exception),而对错误(Error)无能为力,9,异常处理举例(1),public class Test12_2 public static void main(String args) String friends=lisa,bily,kessy; try for(int i=0;i5;i+) System.out.println(friendsi); catch(ArrayIndexOutOfBoundsException e) System.out.println(index err); System.out.println(nthis is t

5、he end); ,10,异常处理举例(2),程序Test12_2运行结果:java Test12_2 lisa bily kessy index err this is the end Press any key to continue.,11,捕获异常(1),捕获异常是通过try-catch-finally语句实现的。 try ./可能产生异常的代码 catch( ExceptionName1 e ) ./当产生ExceptionName1型异常时的处置措施 catch( ExceptionName2 e ) . /当产生ExceptionName2型异常时的处置措施 finally .

6、/无条件执行的语句 ,12,捕获异常(2),try 捕获异常的第一步是用try语句块选定捕获异常的范围。 catch 在catch语句块中是对异常对象进行处理的代码,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象。与其它对象一样,可以访问一个异常对象的成员变量或调用它的方法。 getMessage( ) 方法,用来得到有关异常事件的信息 printStackTrace( )用来跟踪异常事件发生时执行堆栈的内容。,13,捕获异常(3),finally 捕获异常的最后一步是通过finally语句为异常处理提供一个统一的出口,使得在控制流转到程序的其它部分以前

7、,能够对程序的状态作统一的管理。不论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。 finally语句是任选的,14,IOException异常处理举例(1),import java.io.*; public class Test12_3 public static void main(String args) FileInputStream in=new FileInputStream(myfile.txt); int b; b = in.read(); while(b!= -1) System.out.print(char)b); b = in.read(); i

8、n.close(); ,15,IOException异常处理举例(2),程序Test12_3编译结果: E:exjavac Test12_3.java E:exTest12_3.java:4: 未报告的异常 java.io.FileNotFoundException ;必须被捕获或被声明抛出 FileInputStream in=new FileInputStream(myfile.txt); E:exTest12_3.java:6: 未报告的异常 java.io.IOException ;必须被捕获或被声明抛出b = in.read(); E:exTest12_3.java:9: 未报告的异

9、常 java.io.IOException ;必须被捕获或被声明抛出 b = in.read(); E:exTest12_3.java:11: 未报告的异常 java.io.IOException ;必须被捕获或被声明抛出 in.close(); 4 个错误,16,IOException异常处理举例(3),import java.io.*; public class Test12_4 public static void main(String args) try FileInputStream in=new FileInputStream(myfile.txt); int b= in.rea

10、d(); while(b!= -1) System.out.print(char)b); b = in.read(); in.close(); catch (IOException e) System.out.println(e); finally System.out.println( Its ok!); ,17,EX1 捕获和处理异常,编译、运行应用程序Test12_3.java/Test12_4,体会java语言中异常的捕捉和处理机制。 相关知识:FileInputStream类的成员方法read()的功能是每次从相应的(本地为ASCII码编码格式)文件中读取一个字节,并转换成0255之

11、间的int型整数返回,到达文件末尾时则返回-1。,18,声明抛弃异常,声明抛弃异常是Java中处理异常的第二种方式 如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应声明抛弃异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理 声明抛弃举例: public void readFile(String file) throws IOException / 读文件的操作可能产生IOException类型的异常 FileInputStream fis = new FileInputStream(file); . ,19,声明抛弃异常举例,impor

12、t java.io.*; public class Test12_5 public static void main(String args) Test12_5 t = new Test12_5(); try t.readFile(); catch(IOException e)System.out.println(e); public void readFile()throws IOException FileInputStream in=new FileInputStream(myfile.txt); int b=in.read(); while(b!= -1) System.out.pri

13、nt(char)b); b = in.read(); in.close(); ,20,重写方法声明抛弃异常原则,重写方法不能抛出比被重写方法范围更大的异常类型,public class A public void methodA() throws IOException public class B1 extends TestA public void methodA() throws FileNotFoundException public class B2 extends TestA public void methodA() throws Exception ,21,人工抛出异常,Jav

14、a异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可根据需要人工创建并抛出 首先要生成异常对象,然后通过throw语句实现抛出操作(提交给Java运行环境)。 IOException e =new IOException(); throw e; 可以抛出的异常必须是Throwable或其子类的实例。下面的语句在编译时将会产生语法错误: throw new String(want to throw);,22,创建用户自定义异常类,用户自定义异常类MyException,用于描述数据取值范围错误信息: class MyException extends Exception priva

15、te int idnumber; public MyException(String message, int id) super(message); this.idnumber = id; public int getId() return idnumber; ,23,使用用户自定义异常类,public class Test12_6 public void regist(int num) throws MyException if (num 0) throw new MyException(人数为负值,不合理,3); System.out.println(登记人数 + num); publi

16、c void manager() try regist(100); catch (MyException e) System.out.print(登记失败,出错种类+e.getId(); System.out.print(本次登记操作结束); public static void main(String args) Test12_6 t = new Test12_6(); t.manager(); ,24,断言(考点),语法: assert assert :,25,断言推荐的使用方法,断言的文档和验证以及方法中的内部逻辑 内在不变式 控制流程不变式 后置条件和类不变式,26,断言推荐的使用方法示例(1),内在

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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