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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 狼王 高级黑马   /  2013-6-13 18:55  /  1026 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 狼王 于 2013-6-13 19:26 编辑

在异常中只能catch不能声明的情况中,有这样一种情况,一个类中实现了接口,在类的代码中出现异常时,只能只能catch不能声明为什么?
代码如下:
   class Ticket implements Runnable{
        private int num = 100;
        public void run(){
                       sale();
        }
        
        public void sale(){
                while(true){
                        if(num>0){
                                Thread.sleep(10);
                                System.out.println(Thread.currentThread().getName()+"....sale.."+num--);
                        }
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
Super_Class + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
本帖最后由 薛淑凯 于 2013-6-13 19:23 编辑

毕老师的视频是这么说的,围观,难倒是甲鱼的臀部?看了看书,找到一句话:当覆盖方法的时候,只能抛出在基类方法的异常说明里列出的那些异常,这个限制意味着当基类使用的代码应用到其派生类对象的时候,一样能够工作(这是面向对象的基本概念),异常也不例外。
后边又说了这个异常限制对构造器不起作用,代码有点复杂,看的头晕晕的
回复 使用道具 举报
|--异常的注意事项:
                                |---
                                        如果父类抛出了异常,那么子类必须抛出父类的异常或者父类异常的子类
                                |---
                                        如果父类抛出多个异常,那么子类只能抛出抛出父类异常的子集
                                如果父类的方法没有抛出异常,那么子类覆盖时不能抛出异常
                注-->注-->        子类不能抛出比父类更多的异常
回复 使用道具 举报
Super_Class 发表于 2013-6-13 19:07
|--异常的注意事项:
                                |---
                                        如果父类抛出了异常,那么子类必须抛出父类的异常或者父类异常的子类

我的思维太局限了,没想到那去,谢谢。。。。
回复 使用道具 举报
薛淑凯 发表于 2013-6-13 19:05
毕老师的视频是这么说的,围观,难倒是甲鱼的臀部?看了看书,找到一句话:当覆盖方法的时候,只能抛出在基 ...

下面的版主给了回答。。。
回复 使用道具 举报
狼王 发表于 2013-6-13 19:26
下面的版主给了回答。。。

呃。。以为你问的是这个限制的原因。。
回复 使用道具 举报

楼主你好  如果帖子的问题已经解决,请把帖子的类型改为“已解决”。:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马