异常类嵌套类枚举类.docx
- 文档编号:23233801
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:14
- 大小:190.90KB
异常类嵌套类枚举类.docx
《异常类嵌套类枚举类.docx》由会员分享,可在线阅读,更多相关《异常类嵌套类枚举类.docx(14页珍藏版)》请在冰豆网上搜索。
异常类嵌套类枚举类
课程名称面向对象程序设计
实验项目名称异常类、嵌套类、枚举类
学生姓名专业班级学号
注意:
●务请保存好各自的源代码,已备后用。
●完成本实验后,将实验项目文件和实验报告,压缩为rar文件,上传ftp。
如没有个人文件夹,请按学号_姓名格式建立。
●文件名为:
学号_日期_实验XX,如30801001_20100305_实验01.rar
●请务必在下次实验课之前提交作业,迟交缺交实验报告将酌情扣分。
●请勿抄袭作业。
一次作业抄袭的扣分数至少为缺交作业的3倍。
一.实验目的和要求
掌握异常类、嵌套类、枚举类
二.实验内容
1、程序阅读
2、综合体
三.实验结果与分析(可将程序运行结果截屏,也可分析运行结果)
(一)、程序阅读结果
1.运行下面的Test类,写出运行结果,并分析比较代码1与代码2两种方式的异同
abstractclassA{
abstractvoidabc();
voidbbb(){abc();}
}
classBextendsA{
voidabc(){System.out.println("bbb");}
}
classTest{
staticvoidf(Aa){a.bbb();}
publicstaticvoidmain(String[]args){
f(newA(){
voidabc(){System.out.println("bbb");}
}
);//代码1
f(newB());//代码2
}
}
代码1是匿名类实现;
代码2是顶层类实现;
2.运行下面的Test类,写出运行结果,并分析比较代码1与代码2两种方式的异同
interfaceIA{
voidabc();
voidbbb();
}
classAimplementsIA{
publicvoidbbb(){System.out.println("ccc");}
publicvoidabc(){System.out.println("bbb");}
}
classTest{
staticvoidf(IAa){a.bbb();}
publicstaticvoidmain(String[]args){
f(newIA(){
publicvoidbbb(){System.out.println("ccc");}
publicvoidabc(){System.out.println("bbb");}
}
);//代码1
f(newA());//代码2
}
}
(二)、综合题
1.编译下面的程序,并回答问题。
classExceptionTest1{
publicstaticvoidmain(String[]args){
inta=0,b=0;
try{
a=Integer.parseInt(args[0]);//语句1
b=10;//语句2
}
catch(NumberFormatExceptione){
a=1;
}
System.out.println(a);
System.out.println(b);
}
}
(1)执行上述ExceptionTest1类(在命令提示符下敲入javaExceptionTest199)
运行结果:
(2)执行上述ExceptionTest1类(在命令提示符下敲入javaExceptionTesta)
运行结果:
(3)比较上面两次运行的结果,说明原因。
(思考:
执行语句1时发生异常,语句2执行没有?
)
第一次执行时,输入了99,99可以被强制转化,所以不会出错,此时a=99,b=10;
第二次执行时,输入了a,而a不能被强制转化成Integer类,所以执行Integer.parseInt(args[0])语句时,就会出错,使得a=1,则b=10就不会被执行,所以b仍然是0;
2.编译下面的程序,并回答问题。
classExceptionTest2{
publicstaticvoidmain(String[]args){
inta=0;
try{
a=Integer.parseInt(args[0]);
}
}
}
(1)编译上述程序,是否出错?
出错。
(2)如果出错,给出出错信息(即javac编译该文件出错信息):
分析为何出错?
try语句之后一定要带有catch或者finally。
(2)如果将程序改写为:
classExceptionTest2{
publicstaticvoidmain(String[]args){
inta=0;
try{
a=Integer.parseInt(args[0]);
}
catch(NumberFormatExceptione){
a=1;
}
}
}
上述程序是否编译出错?
为什么?
没有出错。
(3)如果将程序改写为:
classExceptionTest2{
publicstaticvoidmain(String[]args){
inta=0;
try{
a=Integer.parseInt(args[0]);
}
finally{
a=1;
}
}
}
上述程序是否编译出错?
为什么?
没有出错。
(4)如果将程序改写为:
classExceptionTest2{
publicstaticvoidmain(String[]args){
inta=0;
try{
a=Integer.parseInt(args[0]);
}
catch(Exceptione){
a=1;
}
catch(NumberFormatExceptione){
a=2;
}
}
}
上述程序是否编译出错?
出错。
分析为何出错,如何修改程序使之正确?
异常已经被catch(Exceptione)处理,catch(NumberFormatExceptione)无法找到catch块。
直接去掉catch(NumberFormatExceptione){}。
3、编译下面的程序,并回答问题。
classExceptionTest3{
publicstaticvoidmain(String[]args){
check(-1);
}
staticvoidcheck(inti){
if(i<0)thrownewException();
}
}
(1)上述程序编译是否出错?
出错。
分析错误原因
异常类型Exception未被处理。
(2)将上述程序修改为:
classExceptionTest3{
publicstaticvoidmain(String[]args){
check(-1);
}
staticvoidcheck(inti)throwsException{
if(i<0)thrownewException();
}
}
那么,上述程序编译是否出错?
出错。
分析出错原因:
异常类型Exception未被处理。
4.编译下面程序,回答问题。
classExceptionTest4{
publicstaticvoidmain(String[]args){
method3();
System.out.println("success!
");
}
staticvoidmethod1(){
thrownewException();
}
staticvoidmethod2(){
method1();
}
staticvoidmethod3(){
method2();
}
}
(1)上述程序编译是否出错?
出错。
编译错误是什么?
异常类型Exception未被处理。
(2)修正上述程序(通过两种方式:
给方法添加throws子句,或者使用try-catch-finally)。
classExceptionTest4{
publicstaticvoidmain(String[]args){
try{method3();}
catch(Exceptione){System.out.println("success!
");}
}
staticvoidmethod1()throwsException{
thrownewException();
}
staticvoidmethod2()throwsException{
method1();
}
staticvoidmethod3()throwsException{
method2();
}
}
(3)如果将方法method1中的thrownewException();更改为:
thrownewRuntimeException();
那么程序是否编译通过?
通过。
如果编译正常,那么执行ExceptionTest4类,出现什么结果(是否会显示success字符串)?
不会显示success。
如何修改程序使得能够显示success字符串?
classExceptionTest4{
publicstaticvoidmain(String[]args){
try{
method3();
}catch(RuntimeExceptione){
System.out.println("success!
");
}
}
staticvoidmethod1(){
thrownewRuntimeException();
}
staticvoidmethod2(){
method1();
}
staticvoidmethod3(){
method2();
}
}
5、设计一个简单的类ExceptionTest,在该类的main方法中实现:
将输入参数args[0]转换为int类型的数字(要求使用包装类的数字转换方法,并通过try-catch-finally方式捕获并处理转换异常),然后显示这个数字的平方值。
比如,在命令提示符下输入javaExceptionTest9并回车,程序显示81。
publicclassExceptionTest{
publicstaticvoidmain(String[]args){
inta;
try{
a=Integer.parseInt(args[0]);
a=a*a;
}catch(NumberFormatExceptione){
a=1;
}
System.out.println(a);
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 异常 嵌套 枚举