版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
异常处理项目四高等院校公共课系列精品教材Java开发综合实战培养安全意识,访问项目要注意安全性。善于发现和弥补知识欠缺,有意识地完善知识体系结构。思政目标掌握异常处理流程能够使用try-catch-finally结构捕获异常并处理能够自定义异常类及对象处理程序特有的异常技能目标在程序运行过程中,难免会出现各种各样的问题。Java提供了强大的异常处理机制,所有的异常都以类和对象的形式存在。在程序出现错误时,能及时地抛出异常,帮助程序员检查可能出现的错误。异常处理会改变程序的控制流程,让程序有机会对错误做出处理,从而提高程序的可读性和可维护性。项目导读任务1认识异常任务2处理异常知识梳理认识异常任务1任务1认识异常任务引入“金无赤足,人无完人”,代码世界中的程序也一样,没有完美的程序。在运行进销存管理系统的程序时,小白发现,在输入商品的数量或价格时,如果不小心输入了非数值,程序就会终止运行,在控制台显示一段红字提示异常。Java有一套完善的异常处理机制,为什么有的错误会抛出异常,有的根本不能执行呢?在Java中,什么是异常呢?Java的异常处理机制是如何捕获程序中的异常并抛出的呢?在程序设计和运行过程中,即使程序员尽可能规避错误,也难免会出现各种难以预料的问题。例如被装载的类不存在、磁盘空间不足等。这些错误或问题会中断程序运行,导致程序退出,在Java中统称为异常。知识准备一、异常的类型在Java中,所有的异常均作为对象来处理,发生异常时会产生异常对象。java.lang.Throwable类是Java中所有错误类或异常类的根类,两个重要子类是Error类和Exception类。(1)Error类java.lang.Error类是程序无法处理的错误,表示应用程序运行时出现的严重错误(2)Exception类java.lang.Exception类是程序本身可以处理的异常,可分为运行时异常与编译异常,可以被捕获并处理。任务1认识异常运行时异常是指RuntimeException及其子类的异常。这类异常通常由程序逻辑错误产生,是可以避免的异常。编译异常是指Exception类中除RuntimeException以外的异常类及其子类,通常是无法预见的,由于用户的错误或问题引起任务1认识异常案例——运行时异常示例本案例编写一个整数除法运算的程序,帮助读者初识Java中的异常处理机制。(1)新建一个项目ExceptionDemo,在其中添加一个名为DivideTest的类。(2)引入包,然后在类中添加main()方法。(3)运行程序,在控制台窗格中根据提示分别输入被除数和除数,按Enter键,即可返回计算结果。(4)修改程序,获取输入的除数后,判断除数是否为0。如果为0,则要求用户重新输入。(5)运行程序。任务1认识异常运行结果二、常见的异常Java中常见的异常类如表所示。任务1认识异常三、异常处理流程为了保证程序出现异常之后仍然可以正确执行,在程序设计过程中使用如下的结构进行异常处理。该结构的处理流程如图所示。try{ //需要监视异常的代码块}catch(异常类型1异常的变量名1){//处理异常的代码块1}catch(异常类型2异常的变量名2){//处理异常的代码块2}……finally{//最终执行的代码块}任务1认识异常四、Exception类的常用方法Exception类提供了一些方法,用于输出产生异常的原因和错误描述,方便程序开发人员排查错误原因,修复程序。Exception类的常用方法如表所示。任务1认识异常处理异常任务2任务引入Java提供了异常处理机制,但小白不知道应该怎样利用这种机制捕获程序中可能出现的异常。如果知道一段程序有可能会产生异常,该怎样捕获、抛出这种异常呢?此外,在编写的进销存管理系统中,小白希望输入的商品数据格式不对时,程序能提示错误,并要求重新输入;入库商品超出数组容量时输出提示,而不是直接终止程序运行,这又该如何处理呢?知识准备如果不对异常进行正确的处理,可能导致程序的中断执行,造成不必要的损失。所以在程序的设计中必须要考虑各种异常的发生,并进行相应的处理,以保证程序正常执行。任务2处理异常一、处理编译异常编译异常必须由try-catch语句进行捕获和处理,或包含在方法声明的throws列表中,由方法的调用者进行捕获和处理,否则编译不能通过。异常捕获的语法格式是一个完整的结构,try、catch和finally三个子句都不能单独使用,但可以进行组合为try-catch、try-catch-finally或try-finally结构使用。其中,catch子句可以有一个或多个,但finally子句最多只能有一个。任务2处理异常案例——模拟ATM机取款ATM机上只能取整数金额。假设Mark的某张银行账户余额还有1203.68元,他想一次全部取出注销账户。本实战模拟ATM机取款,在控制台输入取款金额,产生数字格式转换异常。(1)新建一个项目BankAccount,在其中添加一个名为BankAccount的类。(2)引入包,然后在类中添加main()方法,编写实现代码。任务2处理异常(3)运行程序,在控制台窗格中输入取款金额,如果不为整数,产生异常,输出异常消息,如图所示。如果输入的是大于账户余额的整数,则输出错误提示信息,如图所示。如果输入的是小于账户余额的整数,则输出取款后的账户余额,如图所示。任务2处理异常
引发异常
余额不足
取款成功二、在方法中抛出异常如果程序中的异常是在其中的某个方法中产生的,但不希望在当前方法中处理这个异常,可以借助throws和throw语句抛出这个异常类的对象。由于异常对象本身带有类型信息,只需要在上层捕获,就可以在任何地方抛出。1.使用throws关键字抛出异常在定义方法时使用throws关键字声明,表示该方法中可能抛出异常,但不处理异常,而是交给方法的调用者进行处理。2.使用throw关键字抛出异常异常类对象通常是在产生异常时,由JVM自动实例化的。任务2处理异常注意:如果在某个方法声明中用关键字throws抛出异常,表示该方法可能会抛出异常。如果使用throw语句抛出异常,则是显式地抛出一个异常对象,明确地表示这里抛出一个异常。案例——对整数除法程序进行异常处理本案例编写一个整数除法运算的方法,使用throw语句在方法中抛出异常,在主方法中捕获并处理异常。(1)新建一个项目DivideException,在其中添加一个名为DivideException的类。(2)引入包,然后在类中添加main()方法,并自定义一个除法运算的方法div()。(3)运行程序,在控制台中根据提示输入被除数和除数,按Enter键任务2处理异常任务2处理异常
运行成功
抛出算术异常
抛出数据格式不匹配异常三、自定义异常类在实际应用中,Java提供的异常类有时并不能满足程序的异常处理需求,例如电话号码中包含字符,输入的年龄为负数,等等。这种情况下,用户可以根据程序的逻辑自定义异常类,以捕获和处理程序特有的运行错误。自定义编译异常类通过继承Exception类创建,具体的语法格式如下:任务2处理异常案例——货车限重根据《货运车辆限重政策》规定,二轴货车其车货总质量不得超过18000千克。本案例自定义一个异常类WeightException,用于限制二轴货车的车货总质量范围。(1)新建一个项目WeightLimite,在其中添加一个名为WeightException的自定义异常类(2)添加一个名为Lorry的类,在类中定义成员变量和成员方法(3)在项目中添加一个名为TestWeight的类,编写main()方法初始化货车对象,并捕获、处理异常。任务2处理异常(4)运行程序。如果输入的重量小于0或在规定范围内,输出对应的提示信息,如图所示。如果输入的重量超出规定上限,则抛出异常。此时,在控制台窗格中可以看到捕获到的异常的描述消息,如图所示。任务2处理异常
质量小于0
质量在规定范围内捕获的异常项目总结上一章的项目实战中,如果在主界面选择功能时输入的不是整数,或输入的商品数量不是整数,价格不是数值,就会抛出NumberFormatException异常,终止程序运行。此外,如果入库的商品种类超出静态常量MAXNUM的值,就会抛出ArrayIndexOutOfBoundsException异常。为保证程序的健壮性,本章的项目实战将处理这些异常。(1)复制并粘贴“进销存管理系统V3.0”,在CopyProject对话框中修改项目名称为“进销存管理系统V4.0”,然后单击Copy按钮关闭对话框。(2)在inBound()方法中,利用try…catch语句捕获输入商品数量和价格时可能产生的数据格式异常。(3)在outBound()方法中,捕获输入商品数量和价格时可能产生的数据格式异常。项目实战(4)在changeInfo()方法中利用try…catch语句处理选择功能编号时可能产生的数据格式异常。(5)处理Entrance()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西同文职业技术学院《卫生保健》2025-2026学年期末试卷
- 太原学院《中国传统文化十五讲》2025-2026学年期末试卷
- 上海建桥学院《中国传统文化十五讲》2025-2026学年期末试卷
- 徐州医科大学《法律职业伦理》2025-2026学年期末试卷
- 邢台应用技术职业学院《分析化学第八版》2025-2026学年期末试卷
- 山西信息职业技术学院《材料力学(1)》2025-2026学年期末试卷
- 朔州陶瓷职业技术学院《中西医结合内科学》2025-2026学年期末试卷
- 沈阳农业大学《网络传播与危机管理》2025-2026学年期末试卷
- 上海电子信息职业技术学院《中医护理学》2025-2026学年期末试卷
- 上海建桥学院《经济思想史》2025-2026学年期末试卷
- 15m深基坑支护及土方工程施工方案
- GB/T 25123.2-2018电力牵引轨道机车车辆和公路车辆用旋转电机第2部分:电子变流器供电的交流电动机
- GB/T 21358-2008喷气燃料过滤分离器通用技术规范
- GA 1149-2014细水雾灭火装置
- 统编版二年级下册读书吧必读书《绿野仙踪》导读、阅读检测【含答案】
- 任务工单14 电压调节器检测
- 水彩画水彩基础知识
- 融媒体新闻学课件
- 考研考博-英语-广州美术学院考试押题卷含答案详解2
- DB13T 5448.11-2021 工业取水定额第11部分:食品行业
- 危大巡视检查记录表(深基坑)
评论
0/150
提交评论