




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十二课,Java异常处理,本课内容,Java异常的概念和处理机制Java异常的分类异常的捕获、处理和抛出使用用户自定义异常,Java异常,Java程序运行过程中所发生的异常事件可分为两类:错误(Error):JVM系统内部错误、资源耗尽等严重情况违例(Exception):其它因编程错误或偶然的外在因素导致的一般性问题,例如:对负数开平方根空指针访问试图读取不存在的文件网络连接中断,Java异常举例(1),publicclassTest12_1publicstaticvoidmain(Stringargs)Stringfriends=lisa,bily,kessy;for(inti=0;i5;i+)System.out.println(friendsi);System.out.println(nthisistheend);,Java异常举例(2),程序Test12_1运行结果:javaTest12_1lisabilykessyExceptioninthreadmainjava.lang.ArrayIndexOutOfBoundsExceptionatTest12_1.main(Test12_1.java:5)Pressanykeytocontinue.,Java异常类层次,常见异常,RuntimeException错误的类型转换数组下标越界空指针访问IOExeption从一个不存在的文件中读取数据越过文件结尾继续读取连接一个不存在的URL,异常处理机制,Java程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。程序员通常只能处理违例(Exception),而对错误(Error)无能为力,异常处理举例(1),publicclassTest12_2publicstaticvoidmain(Stringargs)Stringfriends=lisa,bily,kessy;tryfor(inti=0;i5;i+)System.out.println(friendsi);catch(java.lang.ArrayIndexOutOfBoundsExceptione)System.out.println(indexerr);System.out.println(nthisistheend);,异常处理举例(2),程序Test12_2运行结果:javaTest12_2lisabilykessyindexerrthisistheendPressanykeytocontinue.,捕获违例,捕获异常是通过try-catch-finally语句实现的。try./可能产生违例的代码catch(ExceptionName1e)./当产生ExceptionName1型违例时的处置措施catch(ExceptionName2e)./当产生ExceptionName2型违例时的处置措施finally./无条件执行的语句,捕获违例,try捕获违例的第一步是用try语句块选定捕获违例的范围。catch在catch语句块中是对违例对象进行处理的代码,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的违例对象。与其它对象一样,可以访问一个违例对象的成员变量或调用它的方法。getMessage()方法,用来得到有关异常事件的信息printStackTrace()用来跟踪异常事件发生时执行堆栈的内容。,捕获违例,finally捕获例外的最后一步是通过finally语句为例外处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。不论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。finally语句是任选的,IOException违例处理举例(1),importjava.io.*;publicclassTest12_3publicstaticvoidmain(Stringargs)FileInputStreamin=newFileInputStream(myfile.txt);intb;b=in.read();while(b!=-1)System.out.print(char)b);b=in.read();in.close();,IOException违例处理举例(2),程序Test12_3编译结果:E:exjavacTest12_3.javaE:exTest12_3.java:4:未报告的异常java.io.FileNotFoundException;必须被捕获或被声明抛出FileInputStreamin=newFileInputStream(myfile.txt);E:exTest12_3.java:6:未报告的异常java.io.IOException;必须被捕获或被声明抛出b=in.read();E:exTest12_3.java:9:未报告的异常java.io.IOException;必须被捕获或被声明抛出b=in.read();E:exTest12_3.java:11:未报告的异常java.io.IOException;必须被捕获或被声明抛出in.close();4个错误,IOException违例处理举例(3),importjava.io.*;publicclassTest12_4publicstaticvoidmain(Stringargs)tryFileInputStreamin=newFileInputStream(myfile.txt);intb;b=in.read();while(b!=-1)System.out.print(char)b);b=in.read();in.close();catch(IOExceptione)System.out.println(e);finallySystem.out.println(Itsok!);,EX1捕获和处理违例,编译、运行应用程序Test12_3.java/Test12_4,体会java语言中违例的捕捉和处理机制。相关知识:FileInputStream类的成员方法read()的功能是每次从相应的(本地为ASCII码编码格式)文件中读取一个字节,并转换成0255之间的int型整数返回,到达文件末尾时则返回-1。,声明抛弃违例,声明抛弃违例是Java中处理违例的第二种方式如果一个方法(中的语句执行时)可能生成某种违例,但是并不能确定如何处理这种违例,则此方法应声明抛弃违例,表明该方法将不对这些违例进行处理,而由该方法的调用者负责处理声明抛弃举例:publicvoidreadFile(Stringfile)throwsFileNotFoundException/读文件的操作可能产生FileNotFoundException类型的违例FileInputStreamfis=newFileInputStream(file);.,声明抛弃违例举例,importjava.io.*;publicclassTest12_5publicstaticvoidmain(Stringargs)Test12_5t=newTest12_5();tryt.readFile();catch(IOExceptione)System.out.println(e);publicvoidreadFile()throwsIOExceptionFileInputStreamin=newFileInputStream(myfile.txt);intb;b=in.read();while(b!=-1)System.out.print(char)b);b=in.read();in.close();,重写方法声明抛弃违例原则,重写方法不能抛出比被重写方法范围更大的违例类型,publicclassApublicvoidmethodA()throwsIOExceptionpublicclassB1extendsTestApublicvoidmethodA()throwsFileNotFoundExceptionpublicclassB2extendsTestApublicvoidmethodA()throwsException,抛弃例外,Java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可根据需要需要人工创建并抛出首先要生成例外对象,然后通过throw语句实现抛出操作(提交给Java运行环境)。IOExceptione=newIOException();throwe;可以抛弃的例外必须是Throwable或其子类的实例。下面的语句在编译时将会产生语法错误:thrownewString(wanttothrow);,创建用户自定义例外类,用户自定义例外类MyException,用于描述数据取值范围错误信息:classMyExceptionextendsExceptionprivateintidnumber;publicMyException(Stringmessage,intid)super(message);this.idnumber=id;publicintgetId()returnidnumber;,使用用户自定义例外类,publicclassTest12_6publicvoidregist(intnum)throwsMyExceptionif(num0)thrownewMyException(人数为负值,不合理,3);System.out.println(登记人数+num);publicvoidmanager()tryregist(100);catch(MyExceptione)System.out.print(登记失败,出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 火灾生产恢复应急预案(3篇)
- 制定适合2025年的公司战略与风险管理常识试题及答案
- 城轨火灾专项应急预案(3篇)
- 计算机软件技术员试题及答案分析指导
- 火灾触电应急预案范文(3篇)
- 《机电一体化设备安装与调试》课件-学习情景九 组态软件在机电一体化设备上和自动生产线上的应用
- 高考作文与文化自信的表达探讨试题及答案
- VB编程的艺术与试题及答案的提升
- 2025年VB考试经验分享与试题答案
- VB编程思维试题及答案
- 国际贸易学课件:关税
- 校园食品安全智慧化建设与管理规范
- 检验科事故报告制度
- 精细化学品化学智慧树知到期末考试答案章节答案2024年青岛科技大学
- 分包合同模板
- 多元主体协同治理
- 舞蹈基本功训练与舞蹈鉴赏智慧树知到期末考试答案章节答案2024年兰州文理学院
- 《化妆品原料》课件-油脂的基本特性
- 中西文化鉴赏智慧树知到期末考试答案章节答案2024年郑州大学
- 关节黏连松解手术
- 英语定位纸模板
评论
0/150
提交评论