




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计 异常处理 内容 n异常处理的基础知识 n异常对象的抛出 n异常对象的捕获 n异常的分类 nthrow和throws n自定义异常 5.1 为什么设计异常处理机制 n考虑如下读文件程序 class ReadFile public static void main(Sstring args) 打开文件; /可能失败 确定文件大小; 分配内存; 读入文件; /可能失败 关闭文件; /可能失败 问题:未对失败进行处理问题:未对失败进行处理 n改进:对失败进行处理 n仍然存在的缺点: n模糊了问题求解的逻辑 n语言本身对程序员无约束 n层层处理的麻烦 class ReadFile public static void main(string args) 打开文件; /可能失败 if (失败) 失败处理1 确定文件大小; 分配内存; 读入文件; /可能失败 if (失败) 失败处理2 关闭文件; /可能失败 if (失败) 失败处理3 nJava中对失败进行处理 class ReadFile public static void main(string args) try 打开文件; /可能失败 确定文件大小; 分配内存; 读入文件; /可能失败 关闭文件;/可能失败 catch(打开文件失败)失败处理 catch (读文件失败)失败处理 catch(关闭文件失败)失败处理 5.2 异常对象的抛出 n抛出异常:当程序发生异常时,产生一个异常事件,Java 系统自动产生一个异常对象,然后将这个对象传递给Java 运行时系统,这个例外产生和提交的过程称为抛出 (throw)异常; public class Try1 public static void main(String args) int i = 0; int a = 5, 6, 7, 8; for (i = 0; i = 4; i+) System.out.println(“ a“ + i + “=“ + ai); System.out.print(“this will not be outputed“ ); java.lang.ArrayIndexOutOfBoundsException: 4 at Try1.main(Try1.java:6) 5.3 异常对象的捕捉 n捕获异常:当Java运行时系统得到异常对 象后,它将会寻找处理这一例外的代码, 找到能处理这一异常的方法后,运行时系 统把当前异常对象交给该方法进行处理, 该过程称为捕获(catch)异常。 5.3.1 try, catch, finally n语语法格式 try 代码0(含抛出异常的方法调用) catch (异常类1 e) 异常处理代码1 catch (异常类n e) 异常处理代码n finally 必须执行的代码 后续代码 1) 执行代码0; 2) 在执行代码0的过程 中, 若无异常类的对象抛 出,则执行finally后必须 执行的代码, 3) 若有异常类i的对象 抛出,则执行异常处理代 码i, 并执行finally后必 须执行的代码. 4) 执行后续代码. 5.3.2 try, catch, finally示例(1) nExcDemo1.java n运行结果 n注意: n有可能产生异常的代码放到try语句块中 n抛出异常后,try语句块中抛出异常的语句之后 的代码不被执行,程序的执行流程转向到捕获 到该异常的catch语句块中。 异常产生之前 数组下标越界 在catch语句之后 5.3.3 try, catch, finally示例(2) n若一个方法抛出异常,但在该方法内没有捕获异 常,则该异常将沿此方法的调用路径反向向上传 递,直到该异常被捕获,否则,该异常将传递给 Java运行系统(Java运行系统将终止程序的执行 ,并打印错误提示)。 n示例:ExcDemo2.java n示例:NotHandled.java n待捕获异常的类型须与抛出异常的类型相匹配, 程序的执行流程不会转向到不匹配的catch语句块 中。 n示例:ExcTypeMismatch.java 5.4 异常的分类 nError: 内存溢出,栈溢出等,程序无法捕捉,由系统处理 。 nRuntime Exception: 设计不当造成的问题, 本可避免的错 误,如数组出界、除零错误等。这种异常java不强制要求 捕捉。 n其他:程序无法预料由环境因素引发的异常,如文件没找 到、输入输出错误、URL格式不正常等。Java要求捕捉 。 5.4.1 常见异常Runtime Exception nArithmeticException : 算术除零异常 nNullPointerException: 空指针异常 nArrayIndexOutOfBoundsException int k= 12/0; int a ; System.out.println(a0); int a = 5, 6, 7, 8; for (i = 0; i 5; i+) System.out.println(“ a“ + i + “=“ + ai); Shape a; a.area( ); 5.4.2 常见异常非Runtime Exception nIOException : 输入输出异常 nEOFException: 文件结束异常 nFileNotFoundException:文件未找到异常 5.5 使用多个catch语句 n一个try语句可以和多个catch语句相关。 n通常每个catch语句用于捕获try语句中可能 抛出的一种类型的异常。 n示例:ExcDemo4.java 5.6 捕获子类异常 n超类的catch语句可以捕获任何子类的异常 n在具有多个catch的语句中,捕获超类异常 的catch应该放到catch序列的最后。 n示例:ExcDemo5.java try 代码(含抛出异常的方法调用) catch (Exception e) 异常处理代码/可捕获Exception类及其子类的异常 5.7 可嵌入的try代码块 n一个try代码块可以嵌入到另一try代码块中 n当内部的try代码块产生的异常没有被与该 try语句对应的catch语句捕获时,此异常便 会传送到外部的try语句中。 n示例:NestTrys.java 5.8 使用finally(1) nfinally代码块:try/catch语句块执行后必 须执行的代码块 try 代码0(含抛出异常的方法调用) catch (异常类1 e) 异常处理代码1 catch (异常类n e) 异常处理代码n finally 必须执行的代码 后续代码 1) 执行代码0; 2) 在执行代码0的过程 中, 若无异常类的对象抛 出,则执行finally后必须 执行的代码, 3) 若有异常类i的对象 抛出,则执行异常处理代 码i, 并执行finally后必 须执行的代码. 4) 执行后续代码. 5.8 使用finally(2) n无论何种原因退出try/catch语句块,均会执行 finally语句块 n由于产生异常而跳出try/catch语句块 n由于return/break等语句跳出try/catch语句块 n示例:FinallyDemo.java n使用finally的时机 n在try语句中打开了文件 n在try语句中建立了网络连接 n在try语句中建立了数据库连接 n 5.9 使用throw语句抛出异常 nthrow语句格式: throw 异常对象; public class Person private int age; public Person(int age) try if (age 0) throw new Exception(“Negative age!“); this.age=age; catch (Exception ex) System.out.println(ex.getMessage(); public static void main(String args) Person person = new Person( -1); 5.10 throws声明 nthrows 申明:申明一个方法将抛出某类异常 n形式: n方法中若包含某类异常的抛出语句(Err和 RuntimeException类除外),若该方法不捕获该异常,则 该方法必须用throws加以申明 n若某方法申明将抛出某类异常(Err和RuntimeException 类除外),则调用它的方法必须捕捉该类异常 n示例:ThrowsDemo.java 修饰符 返回值类型 方法名(参数表) throws 异
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 菌群移植生物标志物-第1篇-洞察及研究
- 油墨厂搅拌桨磨损细则
- 江苏省苏州市昆山市秀峰中学2025-2026学年上学期七年级9月月考数学卷(含答案)
- 2024-2025学年湖南省张家界市高二(下)期末物理试卷(含答案)
- 印刷厂油墨存储管理规定
- 手受伤后安全培训课件
- 社区结构预测-洞察及研究
- 手势小星星课件
- 中国银行新员工思想汇报模板图文
- 咨询工程师《项目决策分析与评价》考试题(附答案)
- ISO 22000-2018食品质量管理体系-食品链中各类组织的要求(2023-雷泽佳译)
- 卡巴斯基应急响应指南
- 理财规划大赛优秀作品范例(一)
- 2023年四川能投筠连电力招聘笔试参考题库附带答案详解
- 护理管理组织结构与设计
- 静配中心清洁消毒考核试题
- 一级烟草专卖管理师理论考试题库(含答案)
- 小学数学《分数除法》50道应用题包含答案
- 碳捕集、利用与封存技术课件
- 化工试生产总结报告
- 复句与单句的辨析课件
评论
0/150
提交评论