黑马程序员技术交流社区

标题: 想到脑暴都想不出,求大神帮下忙好吗? [打印本页]

作者: e644638045    时间: 2014-7-14 17:17
标题: 想到脑暴都想不出,求大神帮下忙好吗?
有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,在ClassA类中有一个方法a,请在这个方法中调用b,然后抛出异常。在客户端有一个类为TestC,有一个方法为c ,请在这个方法中捕捉异常的信息。完成这个例子,请说出java中针对异常的处理机制。
作者: Coup_D`etat    时间: 2014-7-14 17:53
  1. class ClassA
  2. {
  3.         public void a()throws Exception{
  4.                 new ClassB().b();
  5.         }
  6. }
  7. class ClassB{
  8.        
  9.         public void b()throws Exception{
  10.                
  11.         }
  12. }
  13. class TestC{
  14.         public void c(){
  15.                 try {
  16.                         new ClassB().b();
  17.                 } catch (Exception e) {
  18.                         // TODO Auto-generated catch block
  19.                         e.printStackTrace();
  20.                 }
  21.         }
  22. }
复制代码
调用可能会产生异常的方法时,要么在方法上声明,要么在对应代码上加上try{ }catch( ){ }finally{ },



希望可以帮到你,偶不是大神,只是路人

作者: idency    时间: 2014-7-15 10:58
Coup_D`etat 发表于 2014-7-14 17:53
调用可能会产生异常的方法时,要么在方法上声明,要么在对应代码上加上try{ }catch( ){ }finally{ },

这是我的入学题的做法,你参考下!
  1. package com.itheima;

  2. /**
  3. * 第七题:  
  4. * 有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,在ClassA类中有一个方法a,
  5. * 请在这个方法中调用b,然后抛出异常。在客户端有一个类为TestC,有一个方法为c ,请在这个方法中捕捉异常的信息。
  6. * 完成这个例子,请说出java中针对异常的处理机制。
  7. *
  8. * 答:在Java中,当产生异常时,Java会将异常的信息封装成对象,该对象中包好该异常的相关信息;
  9. *   Java中针对异常的处理主要为两种方法:
  10. *   1.将异常抛出,不做任何处理,而是将该问题抛给调用该方法的上级方法进行处理,
  11. *   通过关键字throws在方法上进行表明,当throws在主函数上表明时,表示出现
  12. *   异常主函数也不做处理,而抛给JVM,这时JVM就会停止工作,并将异常信息在控制台打印.
  13. *   
  14. *   2.使用try...catch语句对异常信息进行捕捉,如果在某一方法中要对可能产生的异常进行捕捉,
  15. *   则将可能产生异常的语句使用try{}代码块进行包裹,当try{}代码块中产生异常时.就会获得一个
  16. *   异常对象,此时如果try中的异常类型和catch{}代码块要捕捉的异常类型一致或为其子类,这执行
  17. *   catch{}代码块中的内容,可以将异常信息打印或进行针对性处理.
  18. *   另外:一般在try...catch后会跟finally代码块,finally代码块中的内容是无论是否发生异常
  19. *   一定会执行的内容,当某些程序发生异常后,可能其资源无法正常释放,此时可以再finally代码块中
  20. *   进行资源关闭的操作.
  21. *
  22. *
  23. *
  24. */
  25. public class Test7 {

  26.         public static void main(String[] args) {

  27.                 int n=4;
  28.                 // 调用ClassC中的c()方法
  29.                 ClassC.c(n);
  30.         }

  31. }

  32. class ClassC{

  33.         // 创建c()方法,调用ClassA中的a()方法,并对其进行try...catch处理
  34.         public static void c(int n) {
  35.                 try {
  36.                         ClassA.a(n);
  37.                 } catch (Exception e) {
  38.                         System.out.println(e.getMessage()+e.getStackTrace());
  39.                 }
  40.         }
  41. }

  42. class ClassB {
  43.        
  44.         //创建方法b()并抛出异常,该方法中定义一个打印数组长度为3的int型数组并打印器指定角标的值,可能会出现角标越界异常
  45.         public static void b(int n) throws Exception {
  46.                 int[] arr = new int[3];
  47.                 if(n>2){
  48.                         throw new ArrayIndexOutOfBoundsException("角标越界异常  n="+n);

  49.                 }
  50.                 System.out.println(arr[n]);
  51.         }
  52. }

  53. class ClassA {
  54.        
  55.         //定义一个方法a()并调用ClassB中的方法b()并抛出异常
  56.         public static void a(int n) throws Exception {
  57.                 ClassB.b(n);
  58.         }
  59. }
复制代码

作者: Coup_D`etat    时间: 2014-7-15 11:23
idency 发表于 2014-7-15 10:58
这是我的入学题的做法,你参考下!

不错呀,还顺带举了异常的例子
作者: mirror    时间: 2014-7-15 12:20
idency 发表于 2014-7-15 10:58
这是我的入学题的做法,你参考下!

学习了!
作者: 月影箫风起k    时间: 2014-7-15 13:15
这是入学考试吗?看起来好像也不难的样子啊,不过看三楼的感觉不是简单能做出来就行啊。。。。
作者: xiaogh    时间: 2014-7-15 16:08
代码我能敲出来,但你这一大堆文字表诉我是写不出来的。。
作者: xiaogh    时间: 2014-7-15 16:17
另外,我看了下你的代码,你如何不实例化对象的情况下调用方法= =
作者: idency    时间: 2014-7-15 16:32
xiaogh 发表于 2014-7-15 16:17
另外,我看了下你的代码,你如何不实例化对象的情况下调用方法= =

静态方法直接类名调用哈!
作者: idency    时间: 2014-7-15 16:34
月影箫风起k 发表于 2014-7-15 13:15
这是入学考试吗?看起来好像也不难的样子啊,不过看三楼的感觉不是简单能做出来就行啊。。。。 ...

额,其实我最不喜欢做的就是这样的题,其他的编程题难度虽然大点,但是没这么麻烦:L
作者: xiaogh    时间: 2014-7-15 20:41
idency 发表于 2014-7-15 16:32
静态方法直接类名调用哈!

我去,我竟然没注意到这个static- -
作者: 月影箫风起k    时间: 2014-7-15 21:21
idency 发表于 2014-7-15 16:34
额,其实我最不喜欢做的就是这样的题,其他的编程题难度虽然大点,但是没这么麻烦 ...

祝贺你啊,看你已经进去了,以后不会的要多向你请教了。。。{:2_32:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2