实验六 异常处理.doc_第1页
实验六 异常处理.doc_第2页
实验六 异常处理.doc_第3页
实验六 异常处理.doc_第4页
实验六 异常处理.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

实验六 异常处理云南大学信息学院 面向对象技术导论 java程序设计大学教程 实验【开发语言及实现平台或实验环境】Windows2000 或XP,JDK1.6与Jcreator4.0 【实验目的】1. 掌握Java中异常的概念及含义。2. 掌握异常的定义、抛出方法以及如何捕捉处理异常。3. 熟悉如何将异常处理灵活运用到实际编程中。【实验要求】1. 运行上课讲解的例子;2. 完成下列实验内容。【实验内容】一、读懂并运行下列程序,体会Java中异常处理机制。1. 分析并运行下面的程序。参考源代码如下:import java.io.*;public class ExceptionTestpublic static void main ( String args ) for ( int i = 0; i 4; i+ )int k;try switch ( i ) case 0: /除数为0int zero = 0;k = 911 / zero;break;case 1:/空指针int a = null;k = a0;break;case 2:/数组下标越界int b = new int4;k = b6;break;case 3:/字符串下标越界char ch = China”.charAt(5);break;catch ( Exception e ) System.out.println(nTestCase#+i+n);System.out.println(e);问题:(1) 程序中设计循环有何目的?(2) 程序中将产生哪些异常?(3) 程序中的异常是如何抛出、捕捉及处理的? 答:(1)获得全部的异常。(2)除数为0,空指针,数组下标越界,字符串下标越界(3)抛出:当语义限制被违反时,将会抛出(throw)异常,即产生一个异常事件,生成一个异常对象,并把它提交给运行系统,再由运行系统寻找相应的代码来处理异常。捕捉:异常抛出后,运行时系统从生成异常对象的代码开始,沿方法的调用栈进行查找,直到找到包含相应处理的方法代码,并把异常对象交给该方法为止,这个过程称为捕获(catch)异常。处理:书写特殊的异常处理代码进行处理。实验结果:2. 分析并运行下面的程序。程序源代码如下:public class ExceptionTest public static void main ( String args ) System.out.println(捕获不同类型的异常);try int a=10/0;catch ( ClassCastException e ) System.out.println(发生异常+e);finallySystem.out.println(执行finally语句);问题: 程序产生何异常? 对于类型不匹配的异常,程序中采用什么方法处理的?答:(1)不能正常的捕捉异常(出现类型不匹配的异常)。(2)对于类型不匹配的异常,程序中采用书写特殊的异常处理代码进行处理(把ClassCastException修改成ArithmeticException)。修改后的实验结果:3. 分析并运行下面的程序。程序源代码如下:public class except2public static void main ( String args ) try method();catch (Exception e) static void method () try createException ();System.out.println (try语句被执行); catch ( ArithmeticException e ) System.out.println ( catch语句被执行); finally System.out.println ( finally语句被执行 );System.out.print(d);static void createException () throw new ArrayIndexOutOfBoundsException();问题:(1)程序有何功能?给出程序的运行结果。(2)finally语句的作用及其使用方法是什么?答:(1)利用trycatchfinally语句捕捉异常,利用trycatchfinally形成了一个异常处理保护块。运行结果:finally语句被执行(2)finally语句块中放置受保护的代码;无论是否出现异常,这些代码都会执行。其使用方法:在catch 语句后加finally受保护的代码;把ArithmeticException改成Exception后的运行结果:4. 自定义异常类:输入字母,是小写字母则直接输出,是大写字母则转为小写字母输出;若输入的不是字母,则抛出异常“输入的不是字母!”。程序源代码如下:class MyException extends Exception private char detail;MyException(char a) detail = a;public String toString() return MyException + detail + 输入的不是字母!;class except static void change(char ch) throws MyException System.out.println(Called change( + ch + );if( chZ & chz)throw new MyException(ch);else if( ch=A & ch=Z ) System.out.println(ch+ change to + (char)(ch+32);else System.out.println(No change + ch);public static void main(String args)throws java.io.IOExceptionchar input = (char) System.in.read();trychange(input );catch(MyException e)System.out.println(Caught + e);问题:(1) 程序功能是什么?叙述程序运行结果。(2) 程序中是如何实现自定义异常的?(3) 修改程序,调换输入大、小写字母后的输出。答:(1)把输入的大写字母变换为小写字母;若输入的不是字母,则提示错误;输入的是小写字母,则不转换。实验结果:(2)定义一个Exception的继承类,在这个类中定义特殊的异常(关于输入的不是字母的异常);(3)修改后的程序:class MyException extends Exception private char detail;MyException(char a) detail = a;public String toString() return MyException + detail + 输入的不是字母!;class except static void change(char ch) throws MyException System.out.println(Called change( + ch + );if( chZ & chz)throw new MyException(ch);else if( ch=a & ch=z ) System.out.println(ch+ change to + (char)(ch+32);else System.out.println(No change + ch);public static void main(String args)throws java.io.IOExceptionchar input = (char) System.in.read();trychange(input );catch(MyException e)System.out.println(Caught + e);实验结果:二、试编程完成下列任务。1. 试设计boolean prime(int n)方法,可用来判断n是否为质数,若为质数,则响应true,若不是,则响应false,若n小于0,则抛出自定义异常ArgumentOutOfBounds。(必做)实验代码:import java.io.*;public class TestNum public static boolean prime(int n) throws ArgumentOutOfBoundException if (n 0) throw new ArgumentOutOfBoundException();/n小于抛出异常 if (n = 0|n=1) return false; int m =(int)Math.sqrt(n); for(int i = 2;i 0; -i) try boolean flag = false; BufferedReader input = new BufferedReader(new InputStreamReader( System.in); b=input.readLine(); flag = prime(Integer.parseInt(b); if(flag) System.out.println(Integer.parseInt(b)+为质数+flag); else System.out.print

温馨提示

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

评论

0/150

提交评论