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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡焱老师 中级黑马   /  2014-1-30 11:10  /  1405 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在object中有个wait()这个方法 并且这个方法抛出了异常,为什么其它类使用这个方法的时候只能try 不能抛出呢 不是object类是所有类的父类吗,父类中方法抛出异常子类覆盖它的时候不是可以try 也可以抛吗 这个又怎么解释呢  





评分

参与人数 1技术分 +1 收起 理由
黄晓东 + 1

查看全部评分

5 个回复

倒序浏览
所有类都是继承父类Object,父类可以抛出异常,但子类不行,是能try,哥们,是不是你记错了。
回复 使用道具 举报
陈文杰 来自手机 中级黑马 2014-1-31 22:03:04
藤椅
哥们,注意是直接父类,在多线程中看直接父类。
回复 使用道具 举报
我看了下API文档。

  1.       继承者 java.lang.Exception
  2.           继承者 java.lang.InterruptedException
复制代码


是继承自Exception。 而不是runtimeException的。
那就是编译时异常,所以要进行try

不知对不对,如果不对,请谅解哈

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 e.c 于 2014-2-4 14:31 编辑

可以抛,但要注意一种情况:如果子类是覆盖父类的方法或实现父类方法时,父类的方法没有抛异常则子类也不能抛。
如下:Runnable接口中的run()方法没有声明抛异常,则子类T实现run()方法时也不能抛异常。myRun()则可以抛异常。
class T implements Runnable {
        public void run() {                   //Runnable中的public abstract void run();没有声明抛异常。则这里实现父类的run方法也不能抛
                System.out.println("start sleep...");
                try {
                        Thread.sleep(1000);
                } catch (InterruptedException e) {
                        e.printStackTrace();
                }
                System.out.println("end sleep.s");
        }
        public void myRun() throws InterruptedException{               //这里可以抛
                System.out.println("start sleep...");
                Thread.sleep(1000);
                System.out.println("end sleep.s");
        }
}

评分

参与人数 1技术分 +1 收起 理由
黄晓东 + 1

查看全部评分

回复 使用道具 举报
学习啦。。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马