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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 任江峰 中级黑马   /  2013-5-4 15:36  /  1554 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 任江峰 于 2013-5-4 19:54 编辑
  1. import java.io.IOException;

  2. interface A
  3. {
  4.         void method() throws RuntimeException;
  5. }

  6. interface B
  7. {
  8.         void method() throws IOException;
  9. }

  10. class InterfaceExceptionTest implements A,B
  11. {
  12.         public void method() throws IOException
  13.         {
  14.         }
  15. }
复制代码
为什么InterfaceExceptionTest类中的method()方法
在声明抛出RuntimeException异常的时候编译通过,而声明抛出IOException异常的时候编译错误?
错误提示:
InterfaceExceptionTest.java:15: 错误: InterfaceExceptionTest中的method()无法实现A中的method()
        public void method() throws IOException
                    ^
  被覆盖的方法未抛出IOException

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

5 个回复

倒序浏览
我不明白,接口中没有方法主体还往外抛异常,为什么?
回复 使用道具 举报
王军行 发表于 2013-5-4 17:11
我不明白,接口中没有方法主体还往外抛异常,为什么?

声明这个方法的实现可能会有异常啊。这只是测试接口的异常特性的一段代码,不是实际开发中的。
回复 使用道具 举报
本帖最后由 刘学明    于 2013-5-4 19:11 编辑
  1. import java.io.IOException;
  2. interface A

  3. {

  4.         void method() throws RuntimeException;   //  应该再抛出一个IOException   

  5. }
  6. interface B

  7. {

  8.         void method() throws IOException;

  9. }
  10. class InterfaceExceptionTest implements A,B
  11. {
  12.         public void method() throws IOException  //  因为是实现了  A和B两个接口 所以两个接口中的方法都必须实现

  13.         {

  14.         }

  15. }
复制代码
第一种情况 : public void method() throws RuntimeException  在声明抛出RuntimeException异常的时候编译通过  是因为RuntimeException是运行时异常 不会报错 交给JVM去自动调用异常机制。
第二种情况    public void method() throws IOException     在声明抛出IOException异常时编译失败 是因为IOException是编译时异常,当抛出后没有处理这个异常 因为是覆盖的接口中的方法  那么 它所实现的接口A中的method()方法也要抛出一个IOException异常  (和继承父类相似)
既:
interface A

{

        void method() throws RuntimeException,IOException;

}

回复 使用道具 举报
刘学明    发表于 2013-5-4 19:06
第一种情况 : public void method() throws RuntimeException  在声明抛出RuntimeException异常的时候编译 ...

谢谢指教。明白了。:lol
回复 使用道具 举报
任江峰 发表于 2013-5-4 19:53
谢谢指教。明白了。

那就好 。。。:lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马