实验五异常处理.docx

上传人:b****2 文档编号:1624807 上传时间:2023-05-01 格式:DOCX 页数:8 大小:71.79KB
下载 相关 举报
实验五异常处理.docx_第1页
第1页 / 共8页
实验五异常处理.docx_第2页
第2页 / 共8页
实验五异常处理.docx_第3页
第3页 / 共8页
实验五异常处理.docx_第4页
第4页 / 共8页
实验五异常处理.docx_第5页
第5页 / 共8页
实验五异常处理.docx_第6页
第6页 / 共8页
实验五异常处理.docx_第7页
第7页 / 共8页
实验五异常处理.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验五异常处理.docx

《实验五异常处理.docx》由会员分享,可在线阅读,更多相关《实验五异常处理.docx(8页珍藏版)》请在冰点文库上搜索。

实验五异常处理.docx

实验五异常处理

实验五异常处理

一、实验目的

1.学会利用Try-catch-finally语句来捕获和处理异常;

2.掌握自定义异常类的方法。

二、实验要求

1.通过编程理解系统异常处理的机制和创建自定义异常的方法。

2.掌握基础类。

三、实验内容

(一)异常处理机制

1.编写使用try…catch语句处理异常的程序文件Demo4_1.java,

源代码如下:

publicclassDemo3_1{

publicstaticvoidmain(String[]arg3){

System.out.println("这是一个异常处理的例子\n");

try{

inti=10;

i/=0;

}

catch(ArithmeticExceptione){

System.out.println("异常是:

"+e.getMessage());

}

finally{

System.out.println("finally语句被执行");

}

}

}

编译并运行程序。

注意:

如果在catch语句中声明的异常类是Exception,catch语句也能正确地捕获,这是因为Exception是ArithmeticException的父类。

如果不能确定会发生哪种情况的异常,那么最好指定catch的参数为Exception,即说明异常的类型为Exception。

2、源文件是Demo3_2.java。

要捕捉的异常是除数为零和数组下标越界。

通过修改a和c[]下标值体验程序。

publicclassDemo3_2{

publicstaticvoidmain(String[]args){

inta,b;

intc[]={1,2,3};

try{a=10;

b=100/a;

System.out.println("当前a值:

"+a);

c[2]=200;

System.out.println("当前数组长:

"+c.length);

}

catch(ArithmeticExceptione){

System.out.println("除零错误:

"+e);}

catch(ArrayIndexOutOfBoundsExceptione){

System.out.println("数组下标越界:

"+e);}

finally{

System.out.println("我是finally");}

System.out.println("我能被正常执行到");

}

}

【思考】

①先运行上面程序,观察运行结果。

②按下条件分别修改数据,编译后运行,观察输出结果,分析在try…catch块里那些语句没有被执行,为什么?

块外那些语句可被执行到,为什么?

修改a=0,保持c[2]=200;

保持a=10,修改c[3]=200,

修改a=0,修改c[3]=200;

再添加一个catch{Exceptione}{},位置在最前面,观察编译信息,说明什么?

3、编写Demo3_3.java程序,计算两数相除并输出结果。

使用两个catch子句,分别捕捉除数为0的异常和参数输入有误异常。

源代码如下:

importjava.io.*;

classDemo3_3{

publicstaticvoidmain(Stringargs[]){

try{

BufferedReaderstrin=newBufferedReader(newInputStreamReader(System.in));

System.out.print("请输入除数:

");

Stringcl=strin.readLine();

inta=Integer.parseInt(cl);

System.out.print("请输入被除数:

");

cl=strin.readLine();

intb=Integer.parseInt(cl);

intc=b/a;

System.out.println("商为:

"+c);

}

catch(NumberFormatExceptione){

System.out.println("请输入整数!

");//e.printStackTrace();

}

//捕获除数为0的异常

catch(ArithmeticExceptione){

System.out.println("除数不可以0!

");

//e.printstackTrace();

}

//捕获与I/O有关的异常

catch(IOExceptione){e.printStackTrace();}

//捕获数值转化时的异常,如不能将字符转化成数值

}

}

编译并运行,当输入除数为0时,将有异常出现,当输入的不是整数时,如将30输成了3o,出现的是另一种异常。

(二)自定义异常类

4、注意throw、throws的使用。

源文件是Demo3_4.java。

packagesy3;

classMyExceptionextendsException{

publicStringtoString(){

return"除数等于零";

}

}

classDIV{

doublediv(doublex,doubley)throwsMyException{

if(y==0)thrownewMyException();

elsereturn(x/y);

}

}

publicclassDemo3_4{

publicstaticvoidmain(String[]args){

doublez;

DIVd=newDIV();

try{

z=d.div(100,0);

System.out.println("当前z值:

"+z);

}catch(MyExceptione){

System.out.println(e.toString());

}

}

}

【思考】

1修改try...catch中语句z=div.DIV(100,0)入口参数,观察运行结果。

z=d.div(100,10);

z=d.div(100,0);

2将try...catch语句注释掉,观察编译信息。

3上面条件保持,在main函数后面加上throwsMyException再重新编译,能否通过?

然后运行观察结果,得到什么结论?

2.编写程序Demo3_5.java,包含自定义异常,当输入数值为13和4时抛出该异常。

源代码如下:

classEx3_5extendsException{

Ex3_5(Stringmsg){

super(msg);

}

}

classDemo3_5{

privateintx;

voidsetX(intx){

this.x=x;

}

voidf1()throwsEx3_5{

if(x==13)

thrownewEx3_5("Idon’tlike13!

");

elseif(x==4)

thrownewEx3_5("Idon’tlike4!

");

else

System.out.println(100/x);

}

publicstaticvoidmain(Stringargs[]){

Demo3_5a=newDemo3_5();

try{

a.setX(5);

//a.setX(13);

//a.setX(4);

//a.setX(0);

a.f1();

}

catch(Ex3_5e){

System.out.println("getmessage:

"+e.getMessage());

}

}

}

【思考】编译并运行,分别取消注释上面程序中被注释的语句。

当释放a.setX(13)语句后,查看运行结果,当释放a.setX(4)语句后,查看运行结果,当释放a.setX(0)语句后,查看运行结果。

四、实验练习题

1、编写Java程序,创建数组后,对数组访问时发生的数组越界.实验使用try-catch语句处理该异常。

运行结果如图所示。

 

importjava.io.*;

publicclassDemo3_6{

publicstaticvoidmain(String[]arg3){

try{

BufferedReaderstrin=newBufferedReader(newInputStreamReader(System.in));

System.out.println("请输入创建数组的个数:

\n");

Stringcl=strin.readLine();

inta=Integer.parseInt(cl);

System.out.println("数组创建完毕!

您要查找那个元素?

\n");

Stringc2=strin.readLine();

intb=Integer.parseInt(c2);

}

catch(ArrayIndexOutOfBoundsExceptione){

System.out.println("这里出现的错误类型是:

数组下标越界!

"+e);

}

finally{

System.out.println("主程序正常结束!

");

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2