版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第6章章 Java语言中的异常语言中的异常 异常异常 为了加强程序的鲁棒性(强壮性,robust),程序设计时,必须考虑到可能发生的异常事件并做出相应的处理 例6-1 虽然程序的鲁棒性加强了,但结构臃肿,大量的错误处理代码混杂在程序中,可读性差。目标程序也会增大许多 出错返回信息量太少,无法更确切的了解错误状况或原因。特别是,当出现上述语句没包含的情况时,程序将束手无策 Java异常处理机制异常处理机制 预定义了Exception类。在Exception类中定义了程序产生异常的条件 简化了代码的编写。常见的异常也可以统一处理,提高了效率,代码重用率高 允许程序员自己编写特殊的异常处理程序,以
2、满足更独特的需要 抛出和捕获抛出和捕获 方法的运行过程中,如果发生了异常,称程序产生了一个异常事件,相应地生成异常对象。生成异常对象并把它提交给运行时系统的这一过程称为抛出(throw)异常 异常发生时,Java运行时系统从生成对象的代码块开始进行回溯,找到包含相应异常处理的方法,并把异常对象交给该方法处理,这一过程称为捕获(catch)例6-2 用异常处理方式来重写例6-1 异常机制的优点异常机制的优点 把异常处理代码从常规代码中分离出来,增加了可读性,方便修改 按异常类型和差别进行分组,即从预定义的类Exception中派生自己的子类,对无法预测的异常也可以进行捕获和处理,克服了传统方法中
3、错误信息有限的问题 异常的处理借助于调用堆栈按先近后远的原则进行 异常传播方式异常传播方式 method1method2method3method4探测抛出异常传递捕获处理异常调用异常异常层次结构层次结构 使用异常机制情况使用异常机制情况当方法因为自身无法控制的原因而不能完成其任务文件不存在,网络连接无法建立等处理在方法、类库、类中抛出的异常 如FileInputStream.read产生IOException; 在大的项目中采用统一的方式处理异常时 编写文字处理器一类的程序等;不经常发生但却可能发生的故障 异常示例异常示例 简单扩展前面使用过的程序1-1的HelloWorldApp.java
4、程序,循环打印一些信息。程序执行到第4次循环时,会发生异常代码见程序6-1 异常处理异常处理 try,catch和finally语句 例6-3 try / 此处为抛出具体异常的代码 catch (ExceptionType1 e) / 抛出ExceptionType1异常时要执行的代码 catch (ExceptionType2 e) / 抛出ExceptionType2异常时要执行的代码. catch (ExceptionTypek e) / 抛出ExceptionTypek异常时要执行的代码finally / 必须执行的代码 程序程序6-2示例示例 程序6-2改写了程序6-1。在程序中,捕
5、获所发生的异常,将越界的下标重新置回0,然后让程序继续执行 公共异常公共异常ArithmeticException 整数除法中,如果除数为整数除法中,如果除数为0,则发生该类异常,则发生该类异常NullPointerException 访问没有实例化的对象或调用它的方法访问没有实例化的对象或调用它的方法int i = 12 / 0;image im = new image 4;System.out.println(im0.toString();公共异常公共异常NegativeArraySizeException 创建数组时,元素个数是个负数创建数组时,元素个数是个负数ArrayIndexOut
6、OfBoundsException 数组下标越界数组下标越界 SecurityException 一般在浏览器内抛出。一般在浏览器内抛出。 若若Applet试图进行下述操作,则抛出此异常:试图进行下述操作,则抛出此异常: 访问本地文件。访问本地文件。 打开一个套接口,而不是返回到提供打开一个套接口,而不是返回到提供Applet的主机。的主机。 在运行时环境中运行另一个程序。在运行时环境中运行另一个程序。公共异常公共异常ArrayStoreException 程序试图存取数组中错误的数据类型程序试图存取数组中错误的数据类型FileNotFoundException 试图存取一个并不存在的文件试图
7、存取一个并不存在的文件IOException 通常的通常的I/O错误错误异常分类异常分类在在Java中主要有三类异常。类中主要有三类异常。类java.lang.Throwable是使是使用异常处理机制可被抛出并捕获的所有异常对象的父类。用异常处理机制可被抛出并捕获的所有异常对象的父类。它有三个基本子类,如图所示。它有三个基本子类,如图所示。ExceptionErrorRuntimeExceptionThrowable每个类使用的目的 Error 表示很难恢复的错误,如内存越界。交给系统处理为表示很难恢复的错误,如内存越界。交给系统处理为好好RuntimeException 用来用来表示设计或实
8、现方面的问题,如数组越界等。因表示设计或实现方面的问题,如数组越界等。因为设计和实现正确的程序不会引发这类异常,所以常为设计和实现正确的程序不会引发这类异常,所以常常不处理它常不处理它 发生这类异常时,运行时环境会输出一条信息,提示发生这类异常时,运行时环境会输出一条信息,提示用户修正错误用户修正错误其他其他 异常表示运行时因环境的影响可能发生并可被处理的异常表示运行时因环境的影响可能发生并可被处理的问题。如文件没找到或不完整的问题。如文件没找到或不完整的URL等。程序员处理等。程序员处理它们它们抛出抛出如果一个方法确实引发了一个异常,那么在方法中必须写如果一个方法确实引发了一个异常,那么在方
9、法中必须写明相应的处理代码。明相应的处理代码。 (Error或或RuntimeException两类错误两类错误除外除外)程序员处理异常有两种方法程序员处理异常有两种方法: 一种是使用一种是使用try、catch()块,捕获到所发生的异常类,块,捕获到所发生的异常类,并进行相应的处理。并进行相应的处理。catch块可以为空,表示对发生的块可以为空,表示对发生的异常不进行处理异常不进行处理 另一种方法是,程序员不在当前方法内处理异常,而是另一种方法是,程序员不在当前方法内处理异常,而是把异常抛出到调用方法中。在说明方法时使用如下格式把异常抛出到调用方法中。在说明方法时使用如下格式就可做到这一点就
10、可做到这一点异常抛出异常抛出 异常抛出格式异常抛出格式 (参参数列表数列表) throws 异常列表异常列表public void troubleSome() throws IOException创建自己的异常创建自己的异常用户自定义的所有异常类都必须是用户自定义的所有异常类都必须是Exception的子类的子类在程序中发现异常情况时,可以抛出在程序中发现异常情况时,可以抛出(throw)一个异常实例,将其放到异常队)一个异常实例,将其放到异常队列中去,并激活列中去,并激活Java的异常处理机制,如:的异常处理机制,如:public class MyException extends Exception .throw new MyException () 程序程序6-36-3程序程序6-3定义自己的异常定义自己的异常客户-服务器程序考虑客户考虑客户-服务器程序。在客户端代码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年淄博南部生态产业新城发展中心教育系统公开招聘工作人员(8人)考试备考题库及答案解析
- 2026年池州安徽卫生健康职业学院卫生健康职业学院高层次人才引进计划9名笔试参考题库及答案解析
- 2026年淄博高青县教育和体育局所属事业单位公开招聘工作人员(25人)考试参考试题及答案解析
- 2026云南曲靖市师宗平高学校面向全国招聘储备教师5人考试参考题库及答案解析
- 2026北京海淀区实验学校招聘考试参考试题及答案解析
- 2026年烟台市青年干部人才“菁英计划”选聘(滨州医学院)考试备考试题及答案解析
- 2026河北唐山枫华高中招聘储备教师9人考试参考试题及答案解析
- 2026甘肃庆阳市庆城县事业单位引进高层次和急需紧缺人才80人考试备考题库及答案解析
- 2026年榆林实验幼儿园招聘考试备考题库及答案解析
- 2026年兰州工商学院教师招聘50人(第一批)笔试参考题库及答案解析
- 10.在片SOLT校准件校准规范建议书
- 路树采伐协议书
- 2024年广东广州黄埔区穗东街道政府聘员招聘考试真题
- 广西南宁市本年度(2025)小学一年级数学统编版专题练习(上学期)试卷及答案
- 通信登高作业管理制度
- 上海市杨浦区2024-2025学年六年级上学期期末考试数学试卷(解析版)
- ERCP治疗胆总管结石的护理
- 2025年档案管理员试题及答案
- 2025年度大蒜品牌授权与合作推广合同
- “正则动量”解决带电粒子在磁场中的运动问题
- 有害物质管控标准
评论
0/150
提交评论