版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第9章章 异常异常了解异常的概念,及Java中常用异常类;能熟练使用各种异常处理的结构自定义异常9.1 异常的概念异常的概念在程序设计过程中有两种错误:编译错误编译能检查出来)运行时错误异常)异常通常指的是:程序运行中,导致整个程序无法继续运行的错误;Java中提出异常这个概念的原因是:以面向对象的方式处理程序中可预见的错误,将正确的代码段和错误的代码段分离;也为编写一个稳健的程序提供了保障;Java中异常处理机制就是:抛抓模式9.2 Java中异常类的层次结构中异常类的层次结构Error类体系描述了Java运行系统中的内部错误及资源耗尽等情况,这种错误一般都是灾难性的错误,一般不在程序中捕
2、获处理;从RuntimeException派生出来的异常基本上都是非检查性异常,这类异常大部分是程序员可以避免的,因此这种异常Java不强制要求在程序中捕获处理;从非RuntimeException派生出来的异常基本上都是检查性异常,这类异常很可能是由可预知的外界原因造成的,要求必须在程序中捕获处理。9.3 Java中常用的异常类中常用的异常类异异 常常说说 明明Exception异常层次结构的根类异常层次结构的根类RuntimeException许多许多java.lang异常的基类异常的基类ArithmeticException算术异常,如:除数为算术异常,如:除数为0IllegalArgu
3、mentException方法接收到非法参数方法接收到非法参数ArrayIndexOutOfBoundsException数组下标越界数组下标越界NullPointerException访问空引用访问空引用ClassNotFoundException不能加载所需的类不能加载所需的类NumberFormatException字符串转换数字失败字符串转换数字失败IOExceptionI/O异常的根类异常的根类FileNotFoundException找不到文件找不到文件EOFException文件结束文件结束9.4 异常的捕捉与处理异常的捕捉与处理Java程序在执行过程中如出现异常,会自动生成一个
4、异常类对象,该异常类对象被提交给Java运行时系统,这个过程称为抛出throw异常;当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码,并把当前异常对象交给其处理,这一过程称为捕获catch异常;如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出;Java中用try、catch语句进行异常处理。父类异常可以捕获其子类异常9.4.1 try/catch块的一般形式块的一般形式try /监视有可能发生异常的代码段监视有可能发生异常的代码段catch (异常类型异常类型) /捕获发生的异常捕获发生的异常 /对异常进行处理对异常进行处理clas
5、s Excep public int division(int a, int b) try return a/b; catch(ArithmeticException e) System.out.println(cant division zero);return 0;class CatchTest public static void main(String args) Excep ex = new Excep();int i = ex.division(4, 0);try/catch示例示例9.4.2 多多catch结构结构子异常写在前,父异常写在后;多重catch块只会捕捉到最先产生的异
6、常,而不是把所有的异常全部捕捉完;class MultCatchTest public static void main(String args) try int i0 = Integer.parseInt(args0);int i1 = Integer.parseInt(args1);int i = i0/i1; catch (ArithmeticException e) System.out.println(cant division zero);e.printStackTrace(); catch (ArrayIndexOutOfBoundsException e) System.out
7、.println(ArrayOut);e.printStackTrace();9.4.3 嵌套结构嵌套结构class MultCatchTest public static void main(String args) try int i0 = 1;int i1 = 1;try i0 = Integer.parseInt(args0); i1 = Integer.parseInt(args1); catch (ArrayIndexOutOfBoundsException e) System.out.println(ArrayOut);e.printStackTrace();int i = i0
8、/i1; catch (ArithmeticException e) System.out.println(cant division zero);e.printStackTrace();9.4.4 finally子句子句finally子句的使用就是要try中的代码是否抛出异常,程序都执行它;try代码不抛出异常,try执行完后执行它;try代码抛出的异常在catch子句中被捕获,catch执行完后执行它;try代码抛出异常,但未在任何catch子句中捕获,执行完finally后再向系统抛出异常;当try或catch中有return语句时,会执行完finally子句再返回,这时它就显得更为有用
9、;Finally子句中一般是关闭某个文件、数据库连接等等。try/catch/finally应用模型应用模型try /连接到数据库的代码,有可能发生异常连接到数据库的代码,有可能发生异常 /对数据库进行操作的代码,有可能发生异常对数据库进行操作的代码,有可能发生异常catch (SQLException sqle) /捕获数据库异常捕获数据库异常 /对捕获的异常进行处理对捕获的异常进行处理finally /在在finally块中执行关闭数据库的操作块中执行关闭数据库的操作class MultCatchTest public static void main(String args) try i
10、nt i0 = Integer.parseInt(args0);int i1 = Integer.parseInt(args1);int i = i0/i1; catch (ArithmeticException e) System.out.println(cant division zero);e.printStackTrace(); catch (ArrayIndexOutOfBoundsException e) System.out.println(ArrayOut);e.printStackTrace();finally System.out.println(finally);try/
11、catchfinally示例9.5 throws和和throwjava中的异常可以一层层向上传递,直至虚拟机;Throws就是用于声明方法抛出的异常。此时这个异常就不用在方法中用try/catch语句处理了,而是向上一层传达,让其调用者去处理。一句话:方法中的异常要么用try/catch语句捕获处理,要么用throws向外声明;main方法也可以声明抛出异常,此时就抛给虚拟机了;语法:修饰符 返回类型 方法名形参列表throws 异常列表多个异常用逗号隔开;留意: 1、throws声明的异常只能是方法中抛出的异常,或其父类;2、方法用throws声明的检查性异常,其调用必须处理或向上声明,否则
12、不会通过编译;3、方法覆盖中对于异常声明的限制;9.5.1 throws关键字关键字class Excep public int division(int a, int b) throws ArithmeticException return a/b;class CatchTest public static void main(String args) Excep ex = new Excep();try int i = ex.division(4, 0); catch(ArithmeticException e) e.printStackTrace();throws示例9.5.2 thro
13、w关键字关键字throw语句用于手工抛出异常;执行流程将在throw语句后立即停止,转而寻找与之类型相匹配的catch块;throw语句的语法是:throw 异常类对象;class Excep public int division(int a, int b) try if(b=0) throw new ArithmeticException(); else return a/b; catch(ArithmeticException e) System.out.println(cant division zero);e.printStackTrace();return 0;throw 例如9.6 自定义异常自定义异常在Java 各个体系结构中所提供的异常类基本上能够满足用户的开发需求,但有的时候一些特殊的需求所需要的异常类如果Java体系结构中没有提供,开发者或者是第三方可以自行定义异常类。定义异常类的基本步骤: 1、继承Exception类 2、调用父类的构造方法,传递异常信息 3、使用自定义异常类。所有的自定义异常类都是非运行时异常。自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 呼吸系统慢病管理新进展
- 智能安全设备的人性化设计
- 机械安全事故案例
- 第三章 运动和力的关系-教材实验4 探究加速度与力、质量的关系 2025年高考物理基础专项复习
- 3.3.2盐类水解的影响因素及常数 课件高二上学期化学人教版(2019)选择性必修1
- 智慧园区产品方案
- 《Excel数据获取与处理实战》 课件 陈青 第1、2章 Excel 2016概述、外部数据的获取
- 舆情应急演练桌面推演
- 保暖小帮手教案及反思
- 好饿的毛毛虫说课稿
- 热污染评价及标准
- 脱硫检修方案
- 乐理试题(音程-三和弦)
- 三资系统操作手册
- 绵阳市物业服务收费管理实施细则
- 危险化学品事故应急处置流程图
- 微信公众账号授权书
- 钣金折弯K因子计算
- 生石灰(氧化钙)MSDS
- 中高层管理干部能力提升(刘学元)ppt课件
- 公司兼职销售人员管理制度.docx
评论
0/150
提交评论