最新武汉科技大学Java实验报告实验四.docx
- 文档编号:6506609
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:15
- 大小:102.41KB
最新武汉科技大学Java实验报告实验四.docx
《最新武汉科技大学Java实验报告实验四.docx》由会员分享,可在线阅读,更多相关《最新武汉科技大学Java实验报告实验四.docx(15页珍藏版)》请在冰豆网上搜索。
最新武汉科技大学Java实验报告实验四
信息科学与工程学院《Java程序设计》上机实验报告
专业班级姓名学号
实验时间指导教师成绩
实验名称
实验四异常类的定义及处理
实验目的
1)了解异常处理方法。
2)熟悉并掌握常见异常的捕获方法。
3)熟悉JDK中已经定义的若干异常类的层次结构。
4)掌握自定义异常类的创建方法。
主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)
实验内容:
1、编写程序实现如下功能:
生成并捕获到NegativeArraySizeException和IndexOutOfBoundsException类型的异常,并显示捕获到的异常信息。
然后在此基础上生成并捕获到NullPointerException类型的异常,并显示捕获到的异常信息。
实验步骤:
步骤
(1):
编写一个包含main方法的Application类TestException,然后定义一个方法
voidarraySize(){……}生成并捕获NegativeArraySizeException异常。
步骤
(2):
添加一个方法
voidoutofBound(){……}生成并捕获IndexOutOfBoundsException异常。
步骤(3):
添加一个方法
voidnullPointer(){……}生成并捕获IndexOutOfBoundsException异常。
步骤(4):
在main方法中分别调用以上三个方法。
步骤(5):
将文件保存为TestException.java,然后编译、调试应用程序。
步骤(6):
将outofBound()方法中捕获异常的语句注释掉,重新编译程序,看看会不会有什么语法错误?
如果没错误,执行程序看结果有什么不同?
步骤(7):
将array方法重新定义为如下形式:
voidarraySize()throwsNegativeArraySizeException{……}
然后修改arraySize方法中捕获NegativeArraySizeException异常的语句执行部分。
主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)
程序代码:
publicclassTestException{
publicstaticvoidmain(String[]args){
arraySize();
outofBound();
nullPointer();
}
staticvoidarraySize()throwsNegativeArraySizeException{
try{
intArray[]=newint[-1];
}catch(NegativeArraySizeExceptione){
System.out.println("数组大小异常:
"+e);
}
}
staticvoidoutofBound()
{
try{
inti;
intArray[]=newint[3];
for(i=0;i<=3;i++){Array[i]=i;}
}catch(IndexOutOfBoundsExceptione){
System.out.println("数据溢出:
"+e);
}
}
staticvoidnullPointer(){
try{
Strings;
inta;
s=null;
a=s.length();
}catch(NullPointerExceptione){
System.out.println("调用对象为空:
"+e);
}
}
}
主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)
程序截图:
1、编写程序实现如下功能:
计算两个数之和,参与求和运算的每个数的值都必须在10-20之间,当任意一个数超出范围时,抛出自己的异常。
实验步骤:
步骤
(1):
基于系统异常类Exception,定义自己的异常类NumberRangeException。
步骤
(2):
定义包含main方法的Application类SelfException。
步骤(3):
在SelfException类中添加公共方法:
PublicstaticintselfExceptionTest
(intint1,intint2)throwsNumberRangeException使之能在求int1,int2两个数和之前检查两个数的数值范围,若符合条件则求和,否则抛出异常NumberRangeException。
步骤(4):
在main方法中调用selfExceptionTest方法。
步骤(5):
保存文件为SelfException.java,然后编译并调试程序。
步骤(6):
修改main方法中调用selfExceptionTest方法的实参,看看程序的运行结果有什么不同。
程序代码:
classNumberRangeExceptionextendsException{
staticinta,b;
publicNumberRangeException(Stringmessage,inta,intb){
super(message);
this.a=a;
this.b=b;
主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)
}
}
publicclassSelfException{
publicstaticvoidselfExceptionTest(inta,intb)throwsNumberRangeException{
if((a<10||a>20)||(b<10||b>20))
{thrownewNumberRangeException("数值超出指定范围",a,b);
}
System.out.println("a="+a+""+"b="+b+"\n"+"sum="+(a+b));
}
publicvoidGetSum(){
try{selfExceptionTest(1,100);
}catch(NumberRangeExceptione){
System.out.println(""a="+NumberRangeException.a+"b="+NumberRangeException.b+"\n"+e");
}
}
publicstaticvoidmain(String[]args){
SelfExceptionnum=newSelfException();
num.GetSum();
}
}
程序截图:
(第一次设a=1,b=100;第二次设a=15,b=15。
)
主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)
思考题:
1、翻译下列常用异常类的描述信息
OutOfMemoryError
Aclassinstancecreationexpression,arraycreationexpression,orstringconcatenationoperatiorexpressionthrowsanOutOfMemoryErrorifthereisinsufficientmemoryavailable.
如果没有足够的可用内存,一个类的实例创建表达式,数组创建表达式,或字符串串联操作表达会抛出一个OutOfMemoryError。
NegativeArraySizeException
AnarraycreationexpressionthrowsaNegativeArraySizeExceptionifthevalueofanydimensionexpressionislessthanzero.
一个数组创建表达式会抛出一个NegativeArraySizeException如果任何维度表达的数值小于零。
NullPointerException
AfieldaccessthrowsaNullPointerExceptionifthevalueoftheobjectreference expressionisnull.
AmethodinvocationexpressionthatinvokesaninstancemethodthrowsaNullPointerExceptionifthetargetreferenceisnull.
AnarrayaccessthrowsaNullPointerExceptionifthevalueofthearrayreference expressionisnull.
一个字段访问抛出NullPointerException如果对象的值引用表达式是null。
一个方法调用,调用一个实例方法表达抛出NullPointerException如果目标参考是null。
一个数组访问抛出NullPointerException如果值的数组引用表达式是null。
ArrayIndexOutOfBoundsException
AnarrayaccessthrowsanArrayIndexOutOfBoundsExceptionifthevalueofthearrayindexexpressionisnegativeorgreaterthanorequaltothelengthofthearray.
一个数组访问抛出一个ArrayIndexOutOfBoundsException如果值的数组索引表达式是负面的或大于或等于数组的长度。
主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)
ClassCastException
Throwntoindicatethatthecodehasattemptedtocastanobjecttoasubclassofwhichitisnotaninstance.Forexample,thefollowingcodegeneratesaClassCastException:
Objectx=newInteger(0);
System.out.println((String)x);
抛出指示代码试图创建一个对象的一个子类,它不是一个实例。
例如,下面的代码生成一个ClassCastException异常:
Objectx=newInteger(0);
System.out.println((String)x)
ArithmeticException
Thrownwhenanexceptionalarithmeticconditionhasoccurred.Forexample,aninteger"dividebyzero"throwsaninstanceofthisclass.
一个非凡的算术条件时抛出发生。
例如,一个整数”除以零”抛出一个这个类的实例。
ArrayStoreException
AnassignmenttoanarraycomponentofreferencetypethrowsanArrayStoreExceptionwhenthevaluetobeassignedisnotcompatiblewiththecomponenttypeofthearray.
一个赋值数组组件的引用类型抛出一个ArrayStoreException当价值分配是不兼容的组件类型数组。
NoSuchFieldException
Signalsthattheclassdoesn'thaveafieldofaspecifiedname.
提示:
在类中没有一个方法指定为该名称。
NoSuchMethodException
Thrownwhenaparticularmethodcannotbefound.
抛出它,当该方法不能被找到的时候。
NumberFormatException
Throwntoindicatethattheapplicationhasattemptedtoconvertastringtooneofthenumerictypes,butthatthestringdoesnothavetheappropriateformat.
抛出它,当确定应用程序试图将字符串转换成数值类型之一,但是,字符串没有适当
主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)
的格式。
FileNotFoundException
Signalsthatanattempttoopenthefiledenotedbyaspecifiedpathnamehasfailed.
提示:
试图打开文件,表明一个指定的路径名已经失败了。
IOException
SignalsthatanI/Oexceptionofsomesorthasoccurred.ThisclassisthegeneralclassofexceptionsproducedbyfailedorinterruptedI/Ooperations.
提示:
一个I/O信号发生某种异常。
这个类是一般类的异常产生的失败或中断I/O操作。
2、编写一个程序,用于根据用户输入的命令行参数数量来计算长方形、正方形、三角形的面积。
如果输入的参数个数为1、2、3则它们应分别对应正方形、长方形、三角形,如果参数值为0,则异常处理方法显示错误消息。
[提示]:
自己定义一个异常类,表示参数个数0这一异常。
然后定义一个抽象的父类,并提供一个抽象的方法area(),再派生出三个子类,重写area方法,最后在main方法中编写测试逻辑。
importjava.util.Scanner;
classMyExceptionextendsException{
publicvoidMyException(inti){
if(i==0){
System.out.println("输入出错!
!
请重新输入:
");
}
}
}
abstractclassarea{
abstractvoidarea();
}
classRectangleAreaextendsarea{
intarea(inta,intb){
intarea=a*b;
returnarea;
}
主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)
}
classSquareAreaextendsarea{
intarea(inta){
intarea=a*a;
returnarea;
}
voidarea(){}
}
classTriangleAreaextendsarea{
doublearea(inta,intb,intc){
doublep=0.5*(a+b+c);
doublearea=Math.sqrt(p*(p-a)*(p-b)*(p-c));
returnarea;
}
voidarea(){}
}
publicclassCountAreaextendsMyException{
staticinta,b,c,i;
staticints[]={a,b,c};
staticMyExceptionme=newMyException();
publicstaticvoidmain(Stringargs[])throwsMyException{
Scannersca=newScanner(System.in);
if(sca.equals(null)){
me.MyException(0);
}
else{while(true){
System.out.println("输入若干整数,用空格隔开,以Enter结束");
Stringnum=sca.nextLine();
num=num.toLowerCase();
if(num.equals("Enter")){
动漫书籍□化妆品□其他□break;
标题:
上海发出通知为大学生就业—鼓励自主创业,灵活就业2004年3月17日}
String[]strs=num.split("");
随着社会经济、文化的飞跃发展,人们正从温饱型步入小康型,崇尚人性和时尚,不断塑造个性和魅力的现代文化价值观念,已成为人们的追求目标。
因此,顺应时代的饰品文化显示出强大的发展势头和越来越广的市场,从事饰品销售是有着广阔的市场空间。
i=strs.length;
1、购买“女性化”if(i==1){
SquareAreasa=newSquareArea();
4.WWW。
google。
com。
cn。
大学生政策2004年3月23日
主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)
intarea=sa.area(Integer.parseInt(strs[0]));
十字绣□编制类□银饰制品类□串珠首饰类□System.out.println("正方形面积为"+area);
}
(三)DIY手工艺品的“自助化”if(i==2){
RectangleAreara=newRectangleArea();
intarea=ra.area(Integer.parseInt(strs[0]),Integer.parseInt(strs[1]));
System.out.println("长方形面积为"+area);
}
就算你买手工艺品来送给朋友也是一份意义非凡的绝佳礼品哦。
而这一份礼物于在工艺品店买的现成的礼品相比,就有价值意义,虽然它的成本比较低但它毕竟它是你花心血花时间去完成的。
就像现在最流行的针织围巾,为何会如此深得人心,更有人称它为温暖牌绝大部分多是因为这个原因哦。
而且还可以锻炼你的动手能力,不仅实用还有很大的装饰功用哦。
if(i==3){
TriangleAreata=newTriangleArea();
doublearea=ta.area(Integer.parseInt(strs[0]),Integer.parseInt(strs[1]),Integer.parseInt(strs[2]));
System.out.println("三角形面积为"+area);
}
}
图1-1大学生月生活费分布}
}
}
程序截图:
主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)
实验总结:
这一次实验与以往实验内容有很大的不同,先前三次实验都进行程序的编写,利用JAVA的一系列特点编写出要求的程序;而此次JAVA实验是专门令程序逻辑错误,然后利用编写的异常类代码对异常进行抛出处理。
JAVA自带了许多异常类的代码,能否利用自身代码处理很多逻辑错误,所以此次实验并非和往常一样着重在方法的定义上面,而是更多在方法的调用上面。
另一方面,JAVA虽然自带了许多异常类,但是用户能够自行编写异常类和继承自带异常类然后进行扩展,这里再一次体现了JAVA程序的灵活。
通过上机,我熟悉了throw、try、catch等命令的使用,并且加深对异常处理的理解。
此次实验的思考题难度较大,翻译题在让我们熟悉JAVA异常命令的同时还检测了我们的英文水平,编程的思考题对我们JAVA水平提出了较高的要求,不仅涉及到类的继承、异常处理和累的具体化等内容,还涉及到键盘输入等以前不太了解的命令。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 武汉 科技大学 Java 实验 报告