




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第10章章 异常处置异常处置本章要点本章要点u了解异常的概念了解异常的概念u掌握捕捉异常的方法掌握捕捉异常的方法u了解了解Java中常见的异常中常见的异常u掌握自定义异常的方法掌握自定义异常的方法u了解如何在方法中抛出异常了解如何在方法中抛出异常u了解运转时异常种类了解运转时异常种类u了解异常处置的运用原那么了解异常处置的运用原那么第第10章章 异常处置异常处置主要内容主要内容10.1 异常概述异常概述n假设一辆轿车发生了缺点,能够是某个零件假设一辆轿车发生了缺点,能够是某个零件发生了问题,也能够是没有油了发生了问题,也能够是没有油了n假设是由于零件问题,只需求改换零件就可假设是由于零件问题
2、,只需求改换零件就可以处理;以处理;n假设是没有油了,只需求加满油就可以正常假设是没有油了,只需求加满油就可以正常行驶了。行驶了。n程序中异常与此类似,就对程序中能够发生程序中异常与此类似,就对程序中能够发生异常语句进展处置,使程序可以正常执行。异常语句进展处置,使程序可以正常执行。10.1 异常概述异常概述n在程序开发过程中,能够存在各种错误,在程序开发过程中,能够存在各种错误,有些错误是可以必免的,而有些错误却是有些错误是可以必免的,而有些错误却是意想不到的,在意想不到的,在Java中把这些能够发生的中把这些能够发生的错误称为异常。错误称为异常。n图图10-1阐明了异常类的承继关系。阐明了
3、异常类的承继关系。 10.1 异常概述异常概述10.2 异常分类异常分类n10.2.1 可控式异常可控式异常n10.2.2 运转时异常运转时异常10.2.1 可控式异常可控式异常n在在Java中把那些可以预知的错误,中把那些可以预知的错误,n例如从文件中读取数据,例如从文件中读取数据,n对数据库进展操作等,对数据库进展操作等,n在程序编译时就能对程序中能够存在的错误在程序编译时就能对程序中能够存在的错误进展处置,并给出详细的错误信息,我们把进展处置,并给出详细的错误信息,我们把这些错误称为可控式异常。这些错误称为可控式异常。10.2.1 可控式异常可控式异常 表表10-1 10-1 常见可控式
4、异常及阐明常见可控式异常及阐明方法方法说明说明IOException输入输出异常输入输出异常SQLException操作数据库异常操作数据库异常classnotfoundexception指定的类不存在指定的类不存在NoSuchFieldException属性不存在异常属性不存在异常NoSuchMethodException方法未找到异常方法未找到异常10.2.1 可控式异常可控式异常【例【例10-1】 在在main()方法中运用方法中运用Class类的类的forName()方法加载一个不存在的类。方法加载一个不存在的类。try Class.forName(com.mysql.jdbc.Dri
5、ver); catch (ClassNotFoundException e) e.printStackTrace();10.2.2 运转时异常运转时异常n在在Java中有些错误是不能被编译器检测到的中有些错误是不能被编译器检测到的n在进展除法运算时,除数为零;在进展除法运算时,除数为零;n试图把一个不是由数字组成的字符串运用试图把一个不是由数字组成的字符串运用Integer类的类的parseInt()方法转换为整数。方法转换为整数。nJava的编译器是检测不到的,因此可以正常的编译器是检测不到的,因此可以正常编译,但是在运转时就会发生异常,这些异编译,但是在运转时就会发生异常,这些异常称为运转
6、时异常。常称为运转时异常。 表表10-2 10-2 常见运转时异常及阐明常见运转时异常及阐明10.2.2 运转时异常运转时异常方法方法说明说明IndexOutOfBoundsException索引越界异常索引越界异常NullPointerException程序遇上了空指针程序遇上了空指针ArithmeticException数学运算异常数学运算异常IllegalArgumentException方法的参数错误方法的参数错误ClassCastException类型强制转换异常类型强制转换异常10.2.2 运转时异常运转时异常【例【例10-2】 在在main()方法中创建一个长度为方法中创建一个长
7、度为5的数组,并为其第的数组,并为其第6个元素赋值。个元素赋值。int array = new int5; array5 = 6; 10.3 获取异常信息获取异常信息n获取异常信息就好比工厂里某个线路出现缺获取异常信息就好比工厂里某个线路出现缺点停电了,电工要从线路中找出现缺点的缘点停电了,电工要从线路中找出现缺点的缘由,由,n找到了出现缺点的缘由,就象程序中获取到找到了出现缺点的缘由,就象程序中获取到了异常信息。了异常信息。n在在Java中中java.lang.Throwable类是一切异类是一切异常类的超类,该类提供了获得异常信息的方常类的超类,该类提供了获得异常信息的方法。法。表表10-
8、3 10-3 获取异常信息的方法及阐明获取异常信息的方法及阐明10.3 获取异常信息获取异常信息方法方法说明说明String getLocalizedMessage()返回异常的本地化描述返回异常的本地化描述String getMessage()返回异常的详细消息字符串返回异常的详细消息字符串String printStackTrace()显示出异常更深的调用信息显示出异常更深的调用信息String toString()获得异常的简短描述获得异常的简短描述10.3 获取异常信息获取异常信息【例【例10-3】 运用上述方法输出进展除运用上述方法输出进展除0运算异运算异常。常。try int z
9、= 100 / 0; catch (Exception ex) ex.printStackTrace(); System.out.println(ex.getMessage(); System.out.println(ex.getLocalizedMessage(); System.out.println(ex.toString();10.4 处置异常处置异常n10.4.1 运用运用try-catch处置异常处置异常n10.4.2 运用运用try-catch-finally处置异常处置异常n10.4.3 运用运用try-finally处置异常处置异常10.4.1 运用运用try-catch处置
10、异常处置异常n对于程序中能够发生异常的语句,可以将其对于程序中能够发生异常的语句,可以将其添加到添加到try-catch语句块中,这样当程序发生语句块中,这样当程序发生异常时,就可以对其进展相应的处置。异常时,就可以对其进展相应的处置。n tryn 需求正常执行的语句需求正常执行的语句n catch(Exception ex)n 对异常进展处置的语句对异常进展处置的语句n 10.4.1 运用运用try-catch处置异常处置异常n阐明:阐明:ntry和和catch是进展异常处置的关键字;是进展异常处置的关键字;ntry和和catch之间的大括号内是程序需求正常之间的大括号内是程序需求正常执行但
11、又能够发生异常的语句;执行但又能够发生异常的语句;ncatch后的小括号内是程序需求处置的异常后的小括号内是程序需求处置的异常类型;类型;ncatch后的大括号内是对程序发生的异常进后的大括号内是对程序发生的异常进展处置的语句。展处置的语句。int a = 6;int b = 0;try / try监控区域监控区域 if (b = 0) throw new ArithmeticException(); System.out.println(a/b的值是:的值是: + a / b);catch (ArithmeticException e) / catch捕捉异常捕捉异常 System.out.
12、println(出现异常,变量出现异常,变量b不能为不能为0);System.out.println(程序正常终了。程序正常终了。);int intArray = new int3;try for (int i = 0; i = intArray.length; i+) intArrayi = i; System.out.println(intArrayi / (i - 3); catch (ArithmeticException e) System.out.println(除数为除数为0异常。异常。);catch (ArrayIndexOutOfBoundsException e) Syst
13、em.out.println(intArray数组下标越界异常。数组下标越界异常。); System.out.println(程序正常终了。程序正常终了。);10.4.2 运用运用try-catch-finallyntry-catch-finally语句块的语法格式如下:语句块的语法格式如下:n tryn 需求执行的语句需求执行的语句n catch(Exception ex)n 对异常进展处置的语句对异常进展处置的语句 n finallyn 一定会被处置的语句一定会被处置的语句n 10.4.2 运用运用try-catch-finallyn阐明:阐明:ntry、catch和和finally是进展
14、异常处置关键字是进展异常处置关键字ntry、catch后面的大小括号的作用同后面的大小括号的作用同try-catch语句。语句。nfinally后大括号内的语句,不论程序能否发生后大括号内的语句,不论程序能否发生异常都要执行,因此异常都要执行,因此finally语句块通常用于执语句块通常用于执行渣滓回收、释放资源等操作。行渣滓回收、释放资源等操作。 int i = 0;String greetings = Hello world !, Hello World ! , HELLO WORLD ! ;while (i 4) try System.out.println(greetingsi+);
15、catch (ArrayIndexOutOfBoundsException e) System.out.println(数组下标越界异常数组下标越界异常); finally System.out.println(-);10.4.3 运用运用try-finally处置异常处置异常n对于程序中能够发生异常的语句,可以将其对于程序中能够发生异常的语句,可以将其添加到添加到try-finally语句块中,这样当程序发语句块中,这样当程序发生异常时,就可以在生异常时,就可以在finally语句块中对其进语句块中对其进展相应的处置,展相应的处置,n另外当程序没有发生异常时,执行完另外当程序没有发生异常时,
16、执行完try和和finally之间的语句后,也将执行之间的语句后,也将执行finally语句语句块中的代码,块中的代码,n因此可以在因此可以在finally语句块中放置一些必需执语句块中放置一些必需执行的代码,比如释放内存资源的代码等等。行的代码,比如释放内存资源的代码等等。10.4.3 运用运用try-finally处置异常处置异常ntry-finally语句块的语法格式如下:语句块的语法格式如下:n tryn 需求执行的语句需求执行的语句n finallyn 一定会被处置的语句一定会被处置的语句n 图图10-1 try10-1 try、catchcatch、finallyfinally语句
17、块的执行语句块的执行10.5 抛出异常抛出异常n10.5.1 运用运用throws声明抛出异常声明抛出异常n10.5.2 运用运用throw语句抛出异常语句抛出异常10.5.1 运用运用throws声明抛出异常声明抛出异常nthrows通常用于方法声明,当方法中能够通常用于方法声明,当方法中能够存在异常,却不想在方法中对异常进展处置存在异常,却不想在方法中对异常进展处置时,就可以在声明方法时运用时,就可以在声明方法时运用throws声明声明抛出的异常,然后在调用该方法的其他方法抛出的异常,然后在调用该方法的其他方法中对异常进展处置如运用中对异常进展处置如运用try-catch语句语句或运用或运
18、用throws声明抛出的异常。声明抛出的异常。10.5.1 运用运用throws声明抛出异常声明抛出异常n假设需求运用假设需求运用throws声明抛出多个异常,各声明抛出多个异常,各异常之间要用逗号分隔。异常之间要用逗号分隔。n 数据类型数据类型 方法名方法名(形参列表形参列表 ) throws 异常异常类类1,异常类异常类2,异常类异常类nn 方法体;方法体;n methodname throws Exception1,Exception2,.,ExceptionN 10.5.1 运用运用throws声明抛出异常声明抛出异常n阐明:阐明:n 数据类型是根本数据类型或对象类型;数据类型是根本数
19、据类型或对象类型;n 方法名是方法名是Java言语的合法标识符;言语的合法标识符;n throws是抛出异常的关键字;是抛出异常的关键字;n 异常类是异常类是Java的异常类或自定义异常类;的异常类或自定义异常类;n 方法体是该方法需求执行的语句。方法体是该方法需求执行的语句。static void pop() throws NegativeArraySizeException int arr = new int-3; / 创建数组创建数组public static void main(String args) try / try语句处置异常信息语句处置异常信息pop(); / 调用调用pop
20、()方法方法 catch (NegativeArraySizeException e) System.out.println(pop()方法抛出的异常方法抛出的异常); 10.5.2 运用运用throw语句抛出异常语句抛出异常n在通常情况下,程序发生错误时系统会自动在通常情况下,程序发生错误时系统会自动抛出异常,而有时希望程序自行抛出异常,抛出异常,而有时希望程序自行抛出异常,可以运用可以运用throw语句来实现。语句来实现。nthrow语句通常用在方法中,在程序中自行语句通常用在方法中,在程序中自行抛出异常,运用抛出异常,运用throw语句抛出的是异常类语句抛出的是异常类的实例,通常与的实例
21、,通常与if语句一同运用。语句一同运用。10.5.2 运用运用throw语句抛出异常语句抛出异常nthrow语句的语法格式如下:语句的语法格式如下:n throw new Exception(对异常的阐明对异常的阐明);n其中其中nthrow是抛出异常的关键字;是抛出异常的关键字;nException是异常类通常运用自定义异常是异常类通常运用自定义异常类。类。10.5.2 运用运用throw语句抛出异常语句抛出异常【例【例10-7】 计算圆的面积。设定圆的半径不能计算圆的面积。设定圆的半径不能小于小于20,小于那么抛出异常并给出提示信息。,小于那么抛出异常并给出提示信息。ThrowDemo e
22、x = new ThrowDemo(); try exputeArea(10); / 调用方法 catch (Exception e) System.out.println(e.getMessage(); private static final double PI = 3.14; / 圆周率圆周率public void computeArea(double r) throws Exception if (r = 20.0) / 运用运用throw语句抛出异常语句抛出异常 throw new Exception(程序异常:程序异常:n半径为半径为 : + r + n半径不能小于半径不能小于20
23、。); else double circleArea = PI * r * r; / 计算圆的面积计算圆的面积 System.out.println(半径是半径是 + r + 的圆面积是:的圆面积是: + circleArea); 10.6 自定义异常自定义异常n10.6.1 创建自定义异常类创建自定义异常类n10.6.2 运用自定义异常类运用自定义异常类10.6.1 创建自定义异常类创建自定义异常类n创建自定义的异常类需求承继自创建自定义的异常类需求承继自Exception类,并提供含有一个类,并提供含有一个String类型形参的构造类型形参的构造方法,该形参就是异常的描画信息,可以经方法,
24、该形参就是异常的描画信息,可以经过过getMessage()方法获得。例如:方法获得。例如:public class NewException extends Exception public NewException(String s) super(s); 10.6.2 运用自定义异常类运用自定义异常类n创建完自定义异常类,我们就可以在程序中创建完自定义异常类,我们就可以在程序中运用自定义异常类了。运用自定义异常类了。n运用自定义异常类可以经过运用自定义异常类可以经过throw语句抛出语句抛出异常,异常,n接下来经过实例来阐明自定义异常类的运用接下来经过实例来阐明自定义异常类的运用10.6.
25、2 运用自定义异常类运用自定义异常类【例【例10-8】 在工程中自定义异常类,然后编写在工程中自定义异常类,然后编写测试类。测试类。1编写自定义异常类编写自定义异常类NewException,该类,该类承继自承继自Exception类。在构造方法中,输出异常类。在构造方法中,输出异常信息。信息。2编写编写NewExceptionTest类,在类,在showArea()方法中抛出异常,在方法中抛出异常,在main()方法中方法中处置异常。处置异常。public class NewException extends Exception private static final long serialVersionUID = -400794805034166270L public NewException(Double r) System.out.println(异常:异常: 半径不能小于半径不能小于20);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 相机镜头保护套与携带方案考核试卷
- 电力设备自动化装配线考核试卷
- 影视特效化妆假牙租赁与道具租赁及后期特效制作及艺人形象设计及道具管理及品牌授权一体化服务合同
- 生物识别考勤系统集成与维护服务合同
- 紧急国际项目文档翻译与后期审核补充协议
- 绿色能源股权交割与可持续发展协议
- 生物医药企业竞业限制协议法律审查、合规性评估与风险控制合同
- 病虫害防控孢子检测与数据分析租赁合同
- 应急救援人员劳务派遣与心理援助服务合同
- 精准医疗项目临床试验数据合作协议
- DB31T 1564-2025企业实验室危险化学品安全管理规范
- 2025版校园食堂日管控、周排查、月调度记录表
- (二模)咸阳市2025年高三高考模拟检测(二)化学试卷(含答案)
- 《城乡规划管理与法规系列讲座课件-建设项目规划与审批》
- 第17课《短文两篇》之《爱莲说》知识点梳理及练习-2022-2023学年七年级语文下册古诗文专题期中期末复习(部编版)(教师版)
- 零碳物流园区建设与运营模式研究
- 《高速公路改扩建工程预算定额》
- 化工装置报废拆除施工方案
- 职场心态-培训课件
- 统编版 高中语文 选择性必修下 第二单元《边城》
- 白内障患者护理教学查房
评论
0/150
提交评论