java数据流,异常处理机制实验报告_第1页
java数据流,异常处理机制实验报告_第2页
java数据流,异常处理机制实验报告_第3页
java数据流,异常处理机制实验报告_第4页
java数据流,异常处理机制实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五次实验实验日志指导教师张璞实验时间:年月日学院计算机专业计算机科学与技术班级0411003 学号2010211865姓名蔡文佳实验室S319一.异常处理机制一、实验目的:掌握异常的基本概念。理解异常处理机制。掌握创建自定义异常的方法。二、实验要求:编写一个有异常处理的Java应用程序。三、实验内容:Java提供了异常处理机制,当程序中发生异常时,程序产生一个异常事件,相应地生成异常对象。系统从生成对象的代码开始,沿方法的调用栈逐层回溯,寻找相应的处理代码,并把异常对象交给该方法处理。在记事本编辑如下源程序:publicclassEx7_1{ publicstaticvoidmain(String[]args){ Stringoutput[]={ "The","quick","brown","fox","jumps", "over","the","lazy","dog."}; inti=0; while(i<12){ System.out.print(output[i++]); } System.out.println("haha..."); } }保存程序Ex7_1.java,编译运行程序,观察并分析程序的运行结果。Thequickbrownfoxjumpsoverthelazydog.Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsExceptionatEx7_1.main(Ex7_1.java:9),可以看出,在第9行出现了数组下标越界的异常,导致了程序的中止,而程序的最后一条语句“System.out.println("haha...");”没有执行。我们修改程序,加入异常处理,当程序发生异常时,经过异常处理后,程序还可以继续执行。修改代码如下:publicclassEx7_2{ publicstaticvoidmain(String[]args){ Stringoutput[]={ "The","quick","brown","fox","jumps", "over","the","lazy","dog."}; inti=0; while(i<12){ try{ System.out.print(output[i++]); } catch(ArrayIndexOutOfBoundsExceptione) { System.out.println(); System.out.println("下标越界异常处理!"); System.out.println(e.toString()); break; } } System.out.println("haha..."); } }重新编译运行程序,对比运行结果。在catch后加入:finally{ System.out.println("不管怎样都要执行的语句!"); }再重新编译运行,对比运行结果。除了下标越界的异常外,还有几个常用的异常,如:ArithmeticException、NullPointerException、NegativeArraySizeException、ArrayIndexOutOfBoundsException等。试编写一个除数为0的异常处理过程。除了使用系统定义的异常外,用户还可以自定义异常。其格式为:publicclassMyExceptionextendsException{…}试自定义一个异常,在计算两个数乘积的方法(Multiply)中,如果结果超过1000则抛出这个异常。方法Multiply定义如下:StaticintMultiply(intn,intm)throwsMyException{ intre; re=n*m; if(re>1000) thrownewMyException(“结果re=”+re+“超过了”+1000); returnre;}完善这个程序,并测试。程序代码:publicclassEx7_1{ publicstaticvoidmain(String[]args){ Stringoutput[]={"The","quick","brown","fox","jumps", "over","the","lazy","dog."}; inti=0; while(i<12){ System.out.print(output[i++]); } System.out.println("haha..."); }}运行结果:程序代码:publicclassEx7_2{ publicstaticvoidmain(String[]args){ Stringoutput[]={ "The","quick","brown","fox","jumps", "over","the","lazy","dog."}; inti=0; while(i<12){ try{ System.out.print(output[i++]); } catch(ArrayIndexOutOfBoundsExceptione) { System.out.println(); System.out.println("下标越界异常处理!"); System.out.println(e.toString()); break; } finally{ System.out.println("不管怎样都要执行的语句!"); } } System.out.println("haha..."); } }运行结果:程序代码:publicclassMyExceptionextendsException{ privateStringErrorMessage; publicMyException(Stringstring){ super(string); ErrorMessage=string; } publicStringgetMessage(){ returnErrorMessage; } }publicclassEx7_3{ publicstaticvoidmain(String[]args){ inta=0; try{ System.out.println(19/a); }catch(ArithmeticExceptione) { System.out.println(); System.out.println("除数不能为0!"); System.out.println(e.toString()); } } } 运行结果:二.Java数据流一、实验目的:掌握数据流的基本概念。掌握多种读取/写入数据的方法。二、实验要求:编写一个含有读取/写入数据的Java应用程序。三、实验内容:编写一个计算器,它从键盘中读取操作数和操作符,经过计算后,在屏幕上输出结果。在记事本编辑如下源程序:importjava.io.*;classCalculator{ publicstaticvoidmain(String[]args){ Calculatorcal=newCalculator(); cal.Calculate(); } publicdoubleReadDouble(){ //从键盘读取一个Double数 doublere=0; DataInputStreamin=newDataInputStream(System.in); try{ Stringtemp=in.readLine(); re=Double.parseDouble(temp); } catch(IOExceptione){ System.out.println("ErrorinI/O:"+e.getMessage()); } returnre; } publicvoidCalculate(){ //计算 bytecmd='q'; do { doubleop1,op2,re=0; byteop; System.out.print("请输入操作数1:"); op1=ReadDouble(); System.out.print("请输入操作(+、-、*、/):"); op=ReadByte(); System.out.print("请输入操作数2:"); op2=ReadDouble(); switch(op) { case'+': re=op1+op2; break; case'-': re=op1-op2; break; case'*': re=op1*op2; break; case'/': re=op1/op2; break; default: System.out.println("操作符错误"); continue; } System.out.println(""+op1+(char)op+op2+"="+re); System.out.print("退出?(Q/q)"); cmd=ReadByte(); }while(cmd!='Q'&&cmd!='q'); } publicbyteReadByte(){ //读操作符 bytecmd[]=newbyte[10]; try{ System.in.read(cmd); } catch(IOExceptione){ System.out.println("ErrorinI/O:"+e.getMessage()); } returncmd[0]; } }保存程序Calculator.java,编译程序,运行并测试程序。试编写一个程序完成文件拷贝功能,即从文件A中读取数据,再写到文件A的拷贝——文件B中。程序代码:importjava.io.*;classCalculator{ publicstaticvoidmain(String[]args){ Calculatorcal=newCalculator(); cal.Calculate(); } publicdoubleReadDouble(){ //从键盘读取一个Double数 doublere=0; DataInputStreamin=newDataInputStream(System.in); try{ Stringtemp=in.readLine(); re=Double.parseDouble(temp); } catch(IOExceptione){ System.out.println("ErrorinI/O:"+e.getMessage()); } returnre; } publicvoidCalculate(){ //计算 bytecmd='q'; do { doubleop1,op2,re=0; byteop; System.out.print("请输入操作数1:"); op1=ReadDouble(); System.out.print("请输入操作(+、-、*、/):"); op=ReadByte(); System.out.print("请输入操作数2:"); op2=ReadDouble(); switch(op) { case'+': re=op1+op2; break; case'-': re=op1-op2; break; case'*': re=op1*op2; break; case'/': re=op1/op2; break; default: System.out.println("操作符错误"); continue; } System.out.println(""+op1+(char)op+op2+"="+re); System.out.print("退出?(Q/q)"); cmd=ReadByte(); }while(cmd!='Q'&&cmd!='q'); } publicbyteReadByte(){ //读操作符 bytecmd[]=newbyte[10]; try{ System.in.read(cmd); }

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论