已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年家居建材行业家居智能化技术应用研究报告及未来发展趋势预测
- 2025年互联网与信息技术继续教育AI生成内容版权保护行业协会AI生成内容版权自律考核试卷
- C1-8卫生院公共卫生回购协议
- 2025年物流行业从业人员碳意识提升效果评估合规考核试卷
- 2025年航空航天行业无人机应用案例研究报告及未来发展趋势预测
- 2026中材锂膜有限公司校园招聘考试笔试备考题库及答案解析
- 2026年中国铁路郑州局集团有限公司招聘普通高校毕业生1288人(二)笔试考试备考题库及答案解析
- 2025甘肃兰州建投金城文化旅游有限公司招聘3人考试笔试参考题库附答案解析
- 2025广东东莞市道滘医院招聘纳入岗位管理编制外人员12人笔试考试参考题库及答案解析
- 2025湖南长沙联合白金人力资源顾问有限公司某国企外包员工(产品经理)招聘公1人告考试笔试参考题库附答案解析
- 物理因子治疗学
- 中央空调系统智能监控方案
- 期中检测试卷(试题)-2024-2025学年数学人教版五年级上册
- 2024年全国职业院校技能大赛中职(企业经营沙盘模拟赛项)考试题库-下(多选、判断题)
- 2024-2030年肠粉行业市场发展分析及发展前景与投资机会研究报告
- HG∕T 2729-2012 硫化橡胶与薄片摩擦系数的测定 滑动法
- 国家中医药管理局发布的406种中医优势病种诊疗方案和临床路径目录
- 2024年贵州省护士岗位技能竞赛操作评分标准
- (高清版)JGT 225-2020 预应力混凝土用金属波纹管
- 心电图进修汇报
- 循证医学智慧树知到期末考试答案章节答案2024年广西中医药大学
评论
0/150
提交评论