A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

第二遍扫盲,居然扫到了个知识点
毕老师说,如果父类和接口的方法中没有异常抛出,那么子类在覆盖该方法时也不可以抛出异常,如果子类方法发生了异常,就必须进行try处理,而不能抛。
关于这句话好有疑问,我编了个程序,发现了问题
问题:下面这段程序里,父类没有抛出异常,子类覆盖了方法仍然可以抛出异常啊,而且子类发生了异常,我也没有try,而是抛了啊,最后运行也是对的。求这句话的正确解释。
  1. class FuShuException extends Exception  //这里我们自定义了一个FuShuException异常,具体内容并没有写出来
  2. {}
  3. class wohao
  4. {
  5.             public int show(int a)
  6.             {
  7.                   return a;
  8.              }
  9. }
  10. public class nihao extends wohao
  11. {
  12.                public static void main(String[] args)throws FuShuException
  13.                {
  14.                     wohao d= new wohao();
  15.                     int x=d.show(-4);  
  16.                     if (x<0)
  17.                           throw new FuShuException();
  18.                     System.out.println(x);
  19.                  }
  20. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

2 个回复

倒序浏览
  1. /*
  2. class FuShuException extends Exception  //这里我们自定义了一个FuShuException异常,具体内容并没有写出来
  3. {}
  4. class wohao
  5. {
  6.         public int show(int a)
  7.         {
  8.                 return a;
  9.         }
  10. }
  11. public class nihao extends wohao
  12. {
  13.         public static void main(String[] args)throws FuShuException
  14.         {
  15.                 wohao d= new wohao();//此处创建的是父类的对象,必调用父类的show方法,与其子类没有关系
  16.                 int x=d.show(-4);
  17.                 if (x<0)
  18.                           throw new FuShuException();//此处异常是在show方法调用之后抛出的
  19.                 System.out.println(x);                        //其作用是判断show的结果,若结果x<0,则抛出异常。与show的调用没有关系。
  20.         }
  21. }
  22. */


  23. //若要实现在父类的show方法中,必须要声明异常,可以用下面的方法。


  24. class FuShuException extends Exception
  25. {}
  26. class WoHao//类名的定义规范是所有单词的首字母都要大写
  27. {
  28.         public int show(int a)throws FuShuException//此处必须要声明异常,否则编译不能通过
  29.         {
  30.                 if (a<0)
  31.                           throw new FuShuException();//在此处判断并抛出异常,show方法就必须要声明异常
  32.                 return a;
  33.         }
  34. }
  35. public class NiHao extends WoHao
  36. {
  37.         public static void main(String[] args)
  38.         {
  39.                 WoHao d= new WoHao();
  40.                 try
  41.                 {
  42.                         int x=d.show(-4);
  43.                         System.out.println(x);
  44.                 }
  45.                 catch(FuShuException e)//此处处理异常
  46.                 {
  47.                         System.out.println("传入了负值.");
  48.                 }
  49.         }
  50. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报

谢谢了,我大概理解了,我把原来的覆盖理解成了调用,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马