版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八章Java异常处理本章内容Java异常的概念和处理机制Java异常的分类异常的捕获、处理和抛出使用用户自定义异常Java异常Java程序运行过程中所发生的异常事件可分为两类:错误(Error):JVM系统内部错误、资源耗尽等严重情况违例(Exception): 其它因编程错误或偶然的外在因素导致的一般性问题,例如:对负数开平方根空指针访问试图读取不存在的文件网络连接中断Java异常举例(1)(0801)public class Test8_1 public static void main(String args) String friends=lisa,bily,kessy; for(i
2、nt i=0;i5;i+) System.out.println(friendsi); System.out.println(nthis is the end); Java异常举例(2)程序Test8_1运行结果:java Test8_1lisabilykessyException in thread main java.lang.ArrayIndexOutOfBoundsException at Test8_1.main(Test8_1.java:5)Press any key to continue.Java异常类层次常见异常RuntimeException 错误的类型转换数组下标越界空指
3、针访问IOExeption从一个不存在的文件中读取数据越过文件结尾继续读取连接一个不存在的URL异常处理机制Java程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。程序员通常只能处理违例(Exception),而对错误(Error)无能为力异常处理举例(1)(0802)public class
4、 Test8_2 public static void main(String args) String friends=lisa,bily,kessy; try for(int i=0;i5;i+) System.out.println(friendsi); catch(java.lang.ArrayIndexOutOfBoundsException e) System.out.println(index err); System.out.println(nthis is the end); 异常处理举例(2)程序java8_2运行结果:java java8_2lisabilykessyin
5、dex errthis is the endPress any key to continue.捕获违例捕获异常是通过try-catch-finally语句实现的。try./可能产生违例的代码catch( ExceptionName1 e )./当产生ExceptionName1型违例时的处置措施catch( ExceptionName2 e ). /当产生ExceptionName2型违例时的处置措施 finally. /无条件执行的语句 捕获违例try 捕获违例的第一步是用try语句块选定捕获违例的范围。catch 在catch语句块中是对违例对象进行处理的代码,每个try语句块可以伴随一
6、个或多个catch语句,用于处理可能产生的不同类型的违例对象。与其它对象一样,可以访问一个违例对象的成员变量或调用它的方法。getMessage( ) 方法,用来得到有关异常事件的信息printStackTrace( )用来跟踪异常事件发生时执行堆栈的内容。捕获违例finally捕获例外的最后一步是通过finally语句为例外处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。不论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。finally语句是任选的IOException违例处理举例(1)(0803)import java.io
7、.*;public class Test8_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(); in.close(); IOException违例处理举例(2)程序Test8_3编译结果: E:exjavac Test8_3.javaE:exTest8_3.java:4: 未报告的异常 java.io.FileNot
8、FoundException ;必须被捕获或被声明抛出FileInputStream in=new FileInputStream(myfile.txt); E:exTest8_3.java:6: 未报告的异常 java.io.IOException ;必须被捕获或被声明抛出b = in.read(); E:exTest8_3.java:9: 未报告的异常 java.io.IOException ;必须被捕获或被声明抛出 b = in.read(); E:exTest8_3.java:11: 未报告的异常 java.io.IOException ;必须被捕获或被声明抛出 in.close();
9、 4 个错误IOException违例处理举例(3)(0804)import java.io.*;public class Test8_4 public static void main(String args)tryFileInputStream in=new FileInputStream(myfile.txt);int b;b = in.read();while(b!= -1) System.out.print(char)b);b = in.read();in.close();catch (IOException e) System.out.println(e);finally Syst
10、em.out.println( Its ok!); 声明抛弃违例(0805)声明抛弃违例是Java中处理违例的第二种方式如果一个方法(中的语句执行时)可能生成某种违例,但是并不能确定如何处理这种违例,则此方法应声明抛弃违例,表明该方法将不对这些违例进行处理,而由该方法的调用者负责处理声明抛弃举例:public void readFile(String file) throws FileNotFoundException / 读文件的操作可能产生FileNotFoundException类型的违例FileInputStream fis = new FileInputStream(file); .
11、 声明抛弃违例举例import java.io.*;public class Test8_5public static void main(String args)Test8_5 t = new Test8_5();try t.readFile(); catch(IOException e)System.out.println(e); public void readFile()throws IOException FileInputStream in=new FileInputStream(myfile.txt);int b;b = in.read();while(b!= -1) Syste
12、m.out.print(char)b);b = in.read();in.close();重写方法声明抛弃违例原则重写方法不能抛出比被重写方法范围更大的违例类型 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 抛弃例外Java异常类对象
13、除在程序执行过程中出现异常时由系统自动生成并抛出,也可根据需要需要人工创建并抛出首先要生成例外对象,然后通过throw语句实现抛出操作(提交给Java运行环境)。IOException e =new IOException();throw e;可以抛弃的例外必须是Throwable或其子类的实例。下面的语句在编译时将会产生语法错误: throw new String(want to throw);0806/test.java创建用户自定义例外类(0806)用户自定义例外类MyException,用于描述数据取值范围错误信息:class MyException extends Exception
14、 private int idnumber; public MyException(String message, int id) super(message);this.idnumber = id; public int getId() return idnumber; 使用用户自定义例外类public class Test8_6 public void regist(int num) throws MyException if (num 0) throw new MyException(人数为负值,不合理,3); System.out.println(登记人数 + num ); public void manager() try
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度科技创新园区承包经营合同示范文本3篇
- 私人房产委托转让合同书
- 2025年度牧民草场承包合同范本附草原资源保护协议4篇
- 企业合作管理合同
- 2025年度智慧城市运营管理承包经营合同范本4篇
- 二期建设2024年给排水工程分包合同3篇
- 二零二五年度光伏发电项目履约保证金合同4篇
- 二零二五年度客运飞机客运服务合同模板4篇
- 2025版模具制造企业安全生产与环境保护合同4篇
- 二零二五年度绿化工程劳务分包合同4篇
- 物业民法典知识培训课件
- 2023年初中毕业生信息技术中考知识点详解
- 2024-2025学年八年级数学人教版上册寒假作业(综合复习能力提升篇)(含答案)
- 《万方数据资源介绍》课件
- 第一章-地震工程学概论
- 《中国糖尿病防治指南(2024版)》更新要点解读
- 浙江省金华市金东区2022-2024年中考二模英语试题汇编:任务型阅读
- 青岛版(五四制)四年级数学下册全册课件
- 大健康行业研究课件
- 租赁汽车可行性报告
- 计算机辅助设计AutoCAD绘图-课程教案
评论
0/150
提交评论