




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章Java的异常处理,学习内容,什么是异常异常的处理自定义异常类的使用,什么是异常示例1,请看图书管理系统中的Tool类中的readFile2Memory方法:,7.1什么是异常示例1续,编译错误:这说明InputStreamReader的构造方法、readLine()和readLine()这个方法有可能产生异常,我们必须处理异常。,什么是异常示例2,classExceptionDemo2publicstaticvoidmain(Stringargs)inta=0;System.out.println(5/a);,C:javacExceptionDemo2.javaC:javaExceptionDemo2java.lang.ArithmeticException:/byzeroatExceptionDemo2.main(ExceptionDemo2.java:4),除0产生运行期异常。,什么是异常示例2续.,这个程序没有编译错误,但是运行时期产生错误:java.lang.ArithmeticException:/byzeroatExceptionDemo2.main(ExceptionDemo2.java:4)从上面的两个示例可以看出异常有两种:一种是编译期异常checkexception一种是运行期异常runtimeexception,异常处理机制,两种处理异常的机制:捕获异常:当Java运行时系统得到一个异常对象时,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型的异常的方法后,运行时系统把当前异常对象交给这个方法进行处理,这一过程称为捕获(catch)异常。这是积极的异常处理机制。如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。声明抛弃异常:如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃(throws)异常。这是一种消极的异常处理机制。,异常类的层次,异常类的层次续,Java中的异常类可分为两大类:ErrorException它们都直接或间接地继承于Throwable类。,7.2异常的处理,Java语言中有两种异常处理机制:捕获异常声明抛弃异常,图书管理系统中Tool类的部分代码:,tryreadfile=newFileInputStream(dbFile);ir=newInputStreamReader(readfile);in=newBufferedReader(ir);Stringstr=in.readLine();while(str!=null)/System.out.println(str);str=str.trim();StringsplitString=null;inthasSplitChar=str.indexOf(COMMA_SIGN_DELIMITERS);if(hasSplitChar!=-1)splitString=str.split(COMMA_SIGN_DELIMITERS);configMap.put(splitString0,str);elsethrownewSplitCharException(splitecharerror.);str=in.readLine();catch(IOExceptione)thrownewFileReadException(readfileerror.);finally,捕获异常,捕获异常是通过try-catch-finally语句实现:try捕获异常的第一步是用try选定捕获异常的范围,由try所限定的代码块中的语句在执行过程中可能会生成异常对象并抛弃。catch每个try代码块可以伴随一个或多个catch语句,用于处理try代码块中所生成的异常事件。catch语句只需要一个形式参数指明它所能够捕获的异常类型,这个类必须是Throwable的子类,运行时系统通过参数值把被抛弃的异常对象传递给catch块。,捕获异常续,catch语句的顺序:捕获异常的顺序和catch语句的顺序有关,当捕获到一个异常时,剩下的catch语句就不再进行匹配。因此,在安排catch语句的顺序时,首先应该捕获最特殊的异常,然后再逐渐一般化。也就是一般先安排子类,再安排父类。IOException是FileNotFoundException父类。,try.catch(FileNotFoundExceptione)System.out.println(e);System.out.println(message:+e.getMessage();e.printStackTrace(System.out);catch(IOExceptione)System.out.println(e);,捕获异常续,finally捕获异常的最后一步是通过finally语句为异常处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。不论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。,声明抛弃异常,如果在一个方法中生成了一个异常,但是这一方法并不确切地知道该如何对这一异常事件进行处理,这时,一个方法就应该声明抛弃异常,使得异常对象可以从调用栈向后传播,直到有合适的方法捕获它为止。声明抛弃异常是在一个方法声明中的throws子句中指明的。例如:,publicintread()throwsIOException.,声明抛弃异常续,throws子句中同时可以指明多个异常,之间由逗号隔开。例如:,publicstaticvoidmain(Stringargs)throwsIOException,IndexOutOfBoundsException,抛出异常,抛出异常就是产生异常对象的过程,首先要生成异常对象,异常或者由虚拟机生成,或者由某些类的实例生成,也可以在程序中生成。在方法中,抛出异常对象是通过throw语句实现的。例如:可以抛出的异常必须是Throwable或其子类的实例。下面的语句在编译时将会产生语法错误:,IOExceptione=newIOException();throwe;,thrownewString(wanttothrow);,自定义异常类的使用,在图书管理系统中我们自定义两个异常类:FileReadException和SplitCharException。自定义异常类图:,自定义异常类的使用续,自定义异常类FileReadException:,importjava.io.IOException;publicclassFileReadExceptionextendsIOExceptionpublicFileReadException()super();publicFileR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 28895-2025防护服装抗油易去污防静电防护服
- 2025河南郑州市新密市国开投资集团有限公司招聘管理人员和专业技术人员9人模拟试卷附答案详解(完整版)
- 2025贵州丹寨县人民检察院招聘聘用制检察辅助人员模拟试卷附答案详解(突破训练)
- 2025广东深圳市优才人力资源有限公司招聘编外聘用人员1人(派遣至深圳市龙岗区机关事务管理局)考前自测高频考点模拟试题及答案详解参考
- 2025年甘肃省烟草专卖局(公司)招聘相关事宜模拟试卷及参考答案详解一套
- 2025福建福州市水路运输事业发展中心招聘编外人员1人模拟试卷完整答案详解
- 2025广东深圳大学人文学院李立教授团队博士后招聘1人考前自测高频考点模拟试题及参考答案详解1套
- 2025南华大学附属南华医院招聘62人(湖南)模拟试卷完整答案详解
- 2025年济宁嘉祥县事业单位公开招聘工作人员(教育类)(68人)考前自测高频考点模拟试题及答案详解(全优)
- 2025年中国环保涂料添加剂行业市场分析及投资价值评估前景预测报告
- 水浒传鲁智深介绍
- 24点游戏的教学课件
- 重庆网吧登记管理办法
- 湖北省中小学生命安全教育课程标准(实验)
- 多耐病人的隔离措施及护理
- 四肢瘫痪的康复护理讲课件
- JG/T 3064-1999钢纤维混凝土
- 2024年安徽国元农业保险股份有限公司招聘笔试真题
- 素描静物构图试题及答案
- 诊所房屋租赁协议书
- 中国糖尿病合并慢性肾脏病临床管理共识 课件
评论
0/150
提交评论