版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
§5-2异常处理Java语言程序设计教学目标任务分析前面我们在录入学生信息时发现,用户如果不能录入正常信息会导致程序崩溃,我们无法保证用户每次都能按正确格式录入,但我们可以通过对用户可能会出现的问题提前进行处理,以保证程序不崩溃。教学内容1声明异常捕获异常2throw抛出异常3一、捕获异常捕获异常的try-catch-finally语句的其语法格式为:try{//可能会引发异常的代码}catch(ExceptionType1e){//对ExceptionType1的处理}catch(ExceptionType2e){//对ExceptionType2的处理}......finally{//该结构并非必须,但如果有,则否发生了异常,finally语句都会执行......//}捕获异常的第一步是用try{…}选定捕获异常的范围,由try所限定的代码块中的语句在执行过程中可能会生成异常对象并抛弃。一、捕获异常1.try每个try代码块可以伴随一个或多个catch语句,用于处理try代码块中所生成的异常事件。catch语句只需要一个形式参数来指明它所能够捕获的异常类型,这个类必须是Throwable的子类,运行时系统通过参数值把被抛弃的异常对象传递给catch块。①如果try中代码没有出现异常,则不会进入catch块。②如果出现异常对象,则会依次与catch块中的异常类型进行验证,是否是属于该类型的异常,如果是,则进入该catch块,后续catch块不再继续验证,即不会再执行后续catch块。如何出现的异常对象不属于所有catch块中的异常,则无法捕获该异常,该异常依然会导致程序崩溃,所以为防止此种情况可以在最后的catch块设置捕获的异常类型为Exception类型。一、捕获异常2.catch捕获异常的最后一步是通过finally语句为异常处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态做统一的管理。一般是用来关闭文件或释放其他的系统资源。虽然finally作为try-catch-finally结构的一部分,但在程序中是可选的,也就是说可以没有finally语句。如果存在finally语句,不论try块中是否发生了异常,是否执行过catch语句,都要执行finally语句。一、捕获异常3.finally示例代码当数组下标超界时,捕获异常publicstaticvoidmain(Stringargs[]){ Stringstr[]={"北京","山东","上海"}; inti=0; while(i<4){ try{ System.out.println(str[i]); }catch(ArrayIndexOutOfBoundsExceptione){ System.out.println("数组下标越界"); }finally{ System.out.println("这行信息总是会打印,无论是否出现异常"); } i++; }}二、声明异常
当Java程序运行时系统得到一个异常对象时,如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃(throws)异常。如果方法中有可能抛出多个异常,异常列表中要一一列出,各异常之间用逗号隔开。语法如下:修饰符返回类型方法名(参数列表)throws异常列表{方法体;}如:publicvoidmyMethod()throwsIOException{……}说明:通过使用throws声明异常的方法,该方法自己不处理本方法中产生的异常,而是由调用它的方法来处理这些异常。三、throw抛出异常
除程序编译或运行阶段系统自动抛出异常外,用户还可以根据实际需求手动通过throw关键字抛出异常。其一般格式为:thrownewXxxException();或
XxxException()ex=newXxxException();throwex;
如果手动抛出的为非运行时异常,则throw所在方法必须是通过throws关键字声明了异常的方法,或使用try-catch对该非运行时异常进行处理。四、自定义异常
尽管Java提供了相当多的异常类,但Exception提供的系统异常并不一定总能捕获程序中发生的所有错误。当用户遇到了系统预定义的异常类不能描述的问题时,还需要创建用户自定义的异常,比如在银行系统中存钱的数据如果小于0即为一种异常现象。
用户定义的异常必须继承自Throwable、Exception类或Exception的其他子类。语法:publicclass类名extends异常类名{//类体}
自定义的异常必须由用户自己抛出throw,格式为:thrownew自定义异常类名()示例代码自定义存款异常类BalanceException继承继承自
ExceptionpublicclassBalanceExceptionextendsException{ publicBalanceException(){} publicBalanceException(Stringmessage){//带参构造方法,指定异常消息 super(message); }
}示例代码//定义银行类Bank,该类具有存款方法publicclassBank{ //存款方法,判断存款金额如果为负数,则声明抛出BalanceException publicstaticvoiddeposit(intbalance)throwsBalanceException{ if(balance<0){ //创建自定义异常对象 BalanceExceptionbalanceException=newBalanceException("存款不能为负数"); //抛出异常
throwbalanceException; }else{ System.out.println("存款成功"); } }示例代码
//在main方法调用存款方法 publicstaticvoidmain(String[]args){ intbalance; Scannersc=newScanner(System.in); System.out.println("请输入存款金额:"); balance=sc.nextInt(); //使用try-catch处理BalanceException try{ deposit(balance); }catch(Exceptione){ e.printStackTrace(); } }}
测试输入金额为正数和负数shi任务实施使用try-catch-finally解决因用户不合理理录入错误而引起的程序崩溃,从而提高程序运行的可靠性,实现步骤如下。1)将可能出现异常的代码(即输入学生年龄部分)放入try代码块。2)使用catch代码块捕获Exception。程序开发阶段可以在catch块中将异常信息通过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年个人借款及债权转让协议
- 2024年阳江考客运从业资格证考试题目
- 2024年专业轻钢建筑施工协议
- 2024年桨扇发动机项目规划申请报告模范
- 2024年拉萨客运从业资格证模拟考试试题题库及答案
- 仓储工程病虫害防治原理
- 互联网基础设施建设投标指南
- 2024年多肉花盆项目提案报告模范
- 互联网企业保密风险防范指南
- 2024年船用配套设备项目立项申请报告模范
- 江苏省徐州市丰县2023-2024学年九年级上学期期中学情调研英语试题
- 脊椎动物-(一)鱼 课件-2024-2025学年人教版生物七年级上册
- 清单九 八类常用特指词语136例
- 市政工程单位、分部、分项工程划分方案
- 2024年新译林版七年级上册英语全册知识点归纳总结
- 人教版(2024)七年级地理上册5.1《人口与人种》精美课件
- 安全教育主题班会-煤气中毒课件
- 新苏教版三年级上册科学全册知识点
- 智联招聘国企笔试题库
- 汽车烤漆房租赁合同范本(2024版)
- 车站调度员技能大赛理论考试题库(单选、多选题)
评论
0/150
提交评论