java---异常类匿名类实验报告.doc_第1页
java---异常类匿名类实验报告.doc_第2页
java---异常类匿名类实验报告.doc_第3页
java---异常类匿名类实验报告.doc_第4页
java---异常类匿名类实验报告.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

实验十四 异常类、匿名类课程名称: 面向对象程序设计 实验项目名称: 实验十四 异常类、匿名类 【实验目的】1掌握Java异常类、嵌套类、匿名类。【实验内容】一、异常类实验1编译下面的程序,并回答问题。class ExceptionTest1 public static void main(String args) int a=0,b=0; try a = Integer.parseInt(args0); / 语句1 b = 10; / 语句2 catch(NumberFormatException e) a = 1; System.out.println(a); System.out.println(b); (1)执行上述ExceptionTest1类(在命令提示符下敲入java ExceptionTest1 99) 运行结果:(2)执行上述ExceptionTest1类(在命令提示符下敲入java ExceptionTest1 a) 运行结果:(3)比较上面两次运行的结果,说明原因。(思考:执行语句1时发生异常,语句2执行没有?) 执行语句1时没有发生异常,语句2执行发生异常。因为在源代码中写有try a = Integer.parseInt(args0); / 语句1 b = 10; / 语句2 catch(NumberFormatException e) a = 1; 当在运行代码时,若在文件名后面输入的是整数,则不会发生异常,try代码块的下面的代码继续执行,而当输入的是字符或是字符串时,try代码块会捕获错误的信息,但是并没有运行下面的代码,如果try代码块中添加了finally部分,将原来的System.out.println(a);System.out.println(b);填入到finally中,则无论有没有发生异常,都能执行到finally中的代码。2编译下面的程序,并回答问题。class ExceptionTest2 public static void main(String args) int a=0; try a = Integer.parseInt(args0); (1) 编译上述程序,是否出错?出错(2) 如果出错, 给出出错信息(即javac编译该文件出错信息): 分析为何出错? 出错原因:try和catch或finally是成对出现的,不能出现了try,而后面就没有了catch或者finally(3)如果将程序改写为: class ExceptionTest2 public static void main(String args) int a=0; try a = Integer.parseInt(args0); catch(NumberFormatException e) a = 1; 上述程序是否编译出错? 为什么?上述程序中try与catch是成对出现的,所以编译不会出错。(4)如果将程序改写为:class ExceptionTest2 public static void main(String args) int a=0; try a = Integer.parseInt(args0); finally a = 1; 上述程序是否编译出错?不出错为什么?当出现了try时,后面要么接catch,要么接finally,但是不能这两个都不接。(4) 如果将程序改写为:class ExceptionTest2 public static void main(String args) int a=0; try a = Integer.parseInt(args0); catch(Exception e) a = 1; catch(NumberFormatException e) a = 2; 上述程序是否编译出错?分析为何出错, 如何修改程序使之正确?处理子类异常的catch代码块要写在前面,超类写在后面。class ExceptionTest2 public static void main(String args) int a=0; try a = Integer.parseInt(args0); catch(NumberFormatException e) a = 2; catch(Exception e) a = 1; 3、编译下面的程序,并回答问题。class ExceptionTest3 public static void main(String args) check(-1); static void check(int i) if( i0) throw new Exception(); (1) 上述程序编译是否出错?出错 分析错误原因:(2)将上述程序修改为:class ExceptionTest3 public static void main(String args) check(-1); static void check(int i) throws Exception if( i0) throw new Exception(); 那么,上述程序编译是否出错?出错分析出错原因: 4编译下面程序,回答问题。class ExceptionTest4 public static void main(String args) method3(); System.out.println(success!); static void method1() throw new Exception(); static void method2() method1(); static void method3() method2(); (1) 上述程序编译是否出错?出错 编译错误是什么? (2)修正上述程序(通过两种方式:给方法添加throws子句,或者使用try-catch-finally)。class ExceptionTest4 public static void main(String args) method3(); System.out.println(success!); static void method1() try throw new Exception(); catch (Exception e) / TODO 自动生成 catch 块e.printStackTrace(); static void method2() method1(); static void method3() method2(); (3)如果将方法method1中的throw new Exception();更改为:throw new RuntimeException();那么程序是否编译通过?通过如果编译正常,那么执行ExceptionTest4类,出现什么结果(是否会显示success字符串)?如何修改程序使得能够显示success字符串?class ExceptionTest4 public static void main(String args) try method3();catch(RuntimeException e) System.out.println(success!); static void method1() throw new RuntimeException(); static void method2() method1(); static void method3() method2(); 5、设计一个简单的类ExceptionTest, 在该类的main方法中实现:将输入参数args0转换为int类型的数字(要求使用包装类的数字转换方法,并通过try-catch-finally方式捕获并处理转换异常),然后显示这个数字的平方值。比如,在命令提示符下输入ExceptionTest 9 并回车,程序显示81。class ExceptionTest public static void main(String args) int a=0; try a = Integer.parseInt(args0); / 语句1 catch(NumberFormatException e) a = 1; finally System.out.println(a+的平方值为:+a*a); 二、匿名类实验1运行下面的Test类,写出运行结果,并分析比较代码1与代码2两种方式的异同abstract class A abstract void abc(); void bbb()abc();class B extends A void abc()System.out.println(bbb);class Test static void f(A a) a.bbb(); public static void main(String args) f( new A() void abc()System.out.println(bbb); ); /代码1 f(new B();/代码2 代码1和代码2的异同:代码1是通过匿名类来实现在代码块中对于A类的继承和对象的创建,此时这个创建好的对象就相当于static void f(A a) a.bbb();中参数值a。代码2则是直接通过在Test2类中的方法static void f(A a) a.bbb();中的参数部分直接创建议了一个A类的对象,然后实现了该方法的功能。2运行下面的Test类,写出运行结果,并分析比较代码1与代码2两种方式的异同interface IA void abc(); void bbb();class A implements IA public void bbb()System.out.println(ccc); public void abc()System.out.println(bbb);class Test static void f(IA a) a.bbb(); public static void main(String args)f(new IA() public void bbb()S

温馨提示

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

评论

0/150

提交评论