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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Cola 中级黑马   /  2013-12-28 13:37  /  1213 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Cola 于 2013-12-31 21:41 编辑

子类覆盖父类的show方法,父类的show方法抛出AException,子类覆盖父类的show方法,可以抛出AException及其子类,如果子类的show方法产生CEception  (AException与CException没有继承关系),子类的show方法不能抛出CExeption,下边的代码使用try处理,也报错了,请问为什么?这种异常该如何处理呢?
  1. class AException extends Exception
  2. {
  3. }

  4. class BException extends AException
  5. {
  6. }

  7. class CException extends Exception
  8. {
  9. }
  10. class Fu
  11. {
  12.         void show()throws AException
  13.         {
  14.                
  15.         }
  16.         
  17. }

  18. class Zi extends Fu
  19. {
  20.         void show() throws BException
  21.         {
  22.                 try
  23.                 {
  24.                         
  25.                 }
  26.                 catch (CException e)
  27.                 {
  28.                 }
  29.         }        
  30. }
复制代码



捕获.JPG (13.16 KB, 下载次数: 33)

报错图片

报错图片

评分

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

查看全部评分

5 个回复

倒序浏览
这个错误是因为你的代码中本身就没有CException产生,你可以在try语句块中直接添加throw new CException();
回复 使用道具 举报
克锋 发表于 2013-12-28 15:36
这个错误是因为你的代码中本身就没有CException产生,你可以在try语句块中直接添加throw new CException(); ...

如果是try中的代码可能会出现CException呢?就像输入的数是负数报异常,调用的时候输入的数不一定是负数,try里边不一定会出现该异常。如果写throw new CException是一定会出现CException异常吧。
回复 使用道具 举报
这个,异常机制真实不太懂了。。如果你集成Error或者是RuntimeException都是没问题的。测试结果好像是,如果需要捕获可能产生的不确定异常只能捕获Exception,如果是在程序中不需要强制捕获的Error,RuntimeException就可以直接在catch 语句中捕获

评分

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

查看全部评分

回复 使用道具 举报
楼主这种代码截图是怎么截的
回复 使用道具 举报
工善器 发表于 2013-12-29 11:26
楼主这种代码截图是怎么截的

发帖的时候,上边有一个<>图标,点击下就可以复制代码啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马