![Java程序设计教程(第三版)课件 项目七 异常捕获_第1页](http://file4.renrendoc.com/view12/M05/1D/21/wKhkGWddhBaAYaAeAADF-XS2KfI563.jpg)
![Java程序设计教程(第三版)课件 项目七 异常捕获_第2页](http://file4.renrendoc.com/view12/M05/1D/21/wKhkGWddhBaAYaAeAADF-XS2KfI5632.jpg)
![Java程序设计教程(第三版)课件 项目七 异常捕获_第3页](http://file4.renrendoc.com/view12/M05/1D/21/wKhkGWddhBaAYaAeAADF-XS2KfI5633.jpg)
![Java程序设计教程(第三版)课件 项目七 异常捕获_第4页](http://file4.renrendoc.com/view12/M05/1D/21/wKhkGWddhBaAYaAeAADF-XS2KfI5634.jpg)
![Java程序设计教程(第三版)课件 项目七 异常捕获_第5页](http://file4.renrendoc.com/view12/M05/1D/21/wKhkGWddhBaAYaAeAADF-XS2KfI5635.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目七异常捕获【项目描述】实现一个2元计算器,通过命令行选择功能,要求实现功能如下:1、除法计算工具,通过在客户端输入2元计算式,由程序给出结果。2、将10进制数转换成2进制或者8进制数。3、通过输入半径计算圆的面积和体积。【任务分解】一个很简单的项目,不是吗?相信很多同学已经开始自己构造该程序了,任务分解当然也很简单:先实现计算器的主体方法,接着实现除法计算工具、实现进制转换工具,最后实现圆的计算工具。我们可通过以下4个任务来到达实现本项目的目的:1.除法计算工具—异常捕获及处理。2.进制转换工具--异常抛出。3.进制转换工具--声明异常。4.圆的计算工具—自定义异常。//计算器的主体方法:Calculator.javapackageedu.gdkm.cal;importjava.util.Scanner;publicclassCalculator{ publicstaticvoidmain(String[]args){ Scannerscanner=newScanner(System.in); Scannerin=newScanner(System.in); while(true){ System.out.println("请选择你需要计算的功能:"); System.out.println("0.退出"); System.out.println("1.除法计算"); System.out.println("2.进制换算"); System.out.println("3.圆计算"); System.out.print("你选择的功能是:");
intnum=in.nextInt(); if(num==0){ System.out.println("谢谢使用,再见!"); System.exit(0); } if(num==1){ System.out.println("请使用‘a/b’的形式输入计算式"); Stringstr=scanner.nextLine(); intk=str.indexOf('/'); if(k>0){ Stringa=str.substring(0,k); Stringb=str.substring(k+1); Division.d(a,b); } }
本代码是实现计算器的主体方法,在主方法main()中,用户可循环选择要进行的功能:"0.退出"、"1.除法计算"、"2.进制换算"、"3.圆计算"。根据用户选择的数字来决定要调用不同的方法:Division.d(a,b、Conversion.conversion(a,b)和Cpute(r),这几个类和方法尚未实现,要在下面的任务中逐个实现。其中需要定义Division类的静态方法d(a,b),用于实现除法计算;定义Conversion类的静态方法conversion(a,b),用于实现进制转换;定义Circle类的compute(r,b)方法,用于实现圆的计算,接下来我们来看一下这三个类如何实现。【任务描述】
实现一个Division类的静态方法d(a,b),用于实现除法计算。相信大家都信心满满的开始干活了,实现代码如下:任务一除法计算工具—异常捕获及处理[必备知识】
1.异常的概念
在Java语言中,异常(Exception)又称为例外,是指在程序运行过程中发生的非正常事件,这些事件的发生会影响程序的正常执行,出现异常是相关处理则成为异常处理。
Java定义了异常类的层次结构,从Trowable开始,Error和Exception则继承于它,而RuntimeException则继承了Exception。2.异常处理的语法格式
try{
程序代码1
}catch(异常类1变量名1){
程序代码2
}catch(异常类2变量名2){
程序代码3
}finally{
程序代码4
}【解题思路】1.定义一个Division类,设计方法d(Stringa,Stringb)。2.实现方法d(Stringa,Stringb)时,为避免非法输入导致的错误,在实现除法的部分要使用try-catch语句捕获并处理NumberFormatException。【任务透析】
packageedu.gdkm.cal;
publicclassDivision{
publicstaticvoidd(Stringa,Stringb){
try{
intx=Integer.parseInt(a);
inty=Integer.parseInt(b);
System.out.println(x/y);
}catch(NumberFormatExceptione){
System.out.println("请输入数字!");
}
}
} 运行结果如下:
图7.4增加异常处理后遇非法输入时的处理情况【课堂提问】★引起异常产生的条件是什么?★试列出5种常见的异常?★异常没有被捕获会发生什么?【现场演练】尝试在该除法运算中捕获除数不能为零异常。任务二进制转换工具--异常抛出【任务描述】实现Conversion类的静态方法conversion(a,b),用于实现进制转换,在处理进制转换基数时,使用异常抛出机制。【必备知识】1.什么叫抛出异常当程序运行时,如果发现异常情况,可以按上文所述进行捕获和处理,也可以通过生成对应异常对象,并将该异常对象传递给Java运行时系统,使系统中包含该异常信息,这样的过程称为抛出异常。在Java中,用关键字throw来抛出一个异常。2.抛出异常的语法格式[格式7-1抛出异常的语法格式]throw异常对象;例如: thrownewNullPointerException();当系统执行到该throw代码时,将终止当前方法的执行,直接返回到调用该方法的位置,所以在该方法下面不能直接书写其他代码,因为这些代码将永远无法执行到。【解题思路】 1.定义一个Conversion类,设计方法conversion(Stringa,Stringb)。2.实现方法conversion(Stringa,Stringb),在处理进制转换基数时,要使用异常抛出机制。【任务透析】
packageedu.gdkm.cal;publicclassConversion{ publicstaticvoidconversion(Stringa,Stringb){ try{ intx=Integer.parseInt(a); inty=Integer.parseInt(b); if(y!=2&&y!=8){ thrownewIllegalArgumentException("进制参数非法!"); } StringBuffers=newStringBuffer(); inttemp;
【任务透析】
while(x!=0){ temp=x%y; //取余数 s.insert(0,temp); //添加到字符串缓存区 x/=y; //去掉余数 } System.out.println(s.toString()); }catch(NumberFormatExceptione){ System.out.println("请输入数字!"); } }} 通过抛出异常的做法,使得该方法的逻辑更加严谨,在出现异常的情况下,将这个异常报告出来,使得该方法不会出现错误的结果,同时提醒其他的结构进行处理。【课堂提问】★抛出异常会引起程序出现什么情况?★为什么需要抛出异常?【现场演练】 尝试抛出被转换的数字不是自然数的异常。任务三进制转换工具--声明异常【任务描述】
实现Conversion类的静态方法conversion(a,b),用于实现进制转换。要求在定义conversion(a,b)方法时,要用throws去声明。【必备知识】1.什么叫声明异常在同样的任务中,我们可以通过抛出异常来对运行时的错误进行报告,从而提醒其他层面的程序对该异常进行处理,但有些时候,我们并不需要处理这些异常,或者不知道如何处理这些异常,这时,它就向上传递,由调用它的方法处理这些异常,为了提醒调用该方法的程序员注意处理这些异常情况,需要在方法的声明中将这些异常声明出来,这就是声明异常。在Java中用关键字throws去声明异常。2.声明异常的语法格式声明异常的语法格式为: throws异常类名例如: publicTest()throwsIllegaArgumentException需要注意的是:1、这些异常必须是该方法内部可能抛出的异常。2、异常类名之间没有顺序。3、属于RuntimeException子类的异常可以不书写在throws语句以后,但是另外一类异常如果可能抛出则必须声明在throws语句之后。【解题思路】1.定义一个Conversion类,设计方法conversion(Stringa,Stringb)。2.实现方法conversion(Stringa,Stringb)注意在处理进制转换基数时,使用异常抛出机制,并声明该异常。【任务透析】packageedu.gdkm.cal;publicclassConversion{ publicstaticvoidconversion(Stringa,Stringb)throwsIllegalArgumentException{ try{ intx=Integer.parseInt(a); inty=Integer.parseInt(b); if(y!=2&&y!=8){ thrownewIllegalArgumentException("进制参数非法!"); } StringBuffers=newStringBuffer(); inttemp; while(x!=0){ temp=x%y; //取余数
s.insert(0,temp); //添加到字符串缓存区 x/=y; //去掉余数 } System.out.println(s.toString()); }catch(NumberFormatExceptione){ System.out.println("请输入数字!"); } }} 【课堂提问】★throw和throws关键字的区别是什么?★为什么需要声明异常?★在任务代码中,conversion(Stringa,Stringb)方法中的try-catch语句能否省掉?为什么?【现场演练】 尝试声明数字转换异常NumberFormatException。任务四圆的计算工具—自定义异常常【任务描述】
实现Circle类的静态方法compute(a,b),用于实现圆的面积和体积的计算。【必备知识】1.自定义异常在JDK里面提供了几百个异常类,但是这些异常所代表的还只是常见的异常情况,在实际使用时,还是无法代表所以的异常情况,所以Java语言允许声明自定义的异常类,使用这些自定义的异常类来代表实际项目中JDK没有提供的异常情况。2.如何自定义异常自定义异常类在语法上要求直接或者间接继承Exception,可以根据需要选择继承Exception或者RuntimeException类,这样也设定了自定义异常类的类型,如果直接继承Exception,则属于必须处理的异常,如果继承的是RuntimeException,则不强制必须被处理。【解题思路】1.定义一个Circle类,设计方法compute(Stringa,Stringb)。2.实现一个自定义异常用于处理圆半径小于0的情况,在计算的过程中时,使用异常捕获机制,处理这个异常。【任务透析】packageedu.gdkm.cal;publicclassCircle{ publicstaticvoidcompute(Stringstr)throwsRadiusException{ try{ intr=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人综合授信贷款合同范文
- 个人房屋租赁合同样本范本
- 个人房产转让合同样本修订版
- 中小学教师工资集体合同范本
- 业务员委托合同范本
- 个人小额信贷合同样本
- 个人设备租赁标准合同
- 个人车辆保险合同标准模板
- 个人友情借款合同样本
- 个人合伙投资合同格式范本
- 神经外科课件:神经外科急重症
- 颈复康腰痛宁产品知识课件
- 2024年低压电工证理论考试题库及答案
- 微电网市场调查研究报告
- 《民航服务沟通技巧》教案第14课民航服务人员上行沟通的技巧
- MT/T 538-1996煤钻杆
- 小学六年级语文阅读理解100篇(及答案)
- CB/T 467-1995法兰青铜闸阀
- 气功修炼十奥妙
- 勾股定理的历史与证明课件
- 中医诊断学八纲辨证课件
评论
0/150
提交评论