黑马程序员技术交流社区

标题: 关于实现多个接口的异常问题 [打印本页]

作者: 任江峰    时间: 2013-5-4 15:36
标题: 关于实现多个接口的异常问题
本帖最后由 任江峰 于 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

作者: 王军行    时间: 2013-5-4 17:11
我不明白,接口中没有方法主体还往外抛异常,为什么?
作者: 任江峰    时间: 2013-5-4 18:19
王军行 发表于 2013-5-4 17:11
我不明白,接口中没有方法主体还往外抛异常,为什么?

声明这个方法的实现可能会有异常啊。这只是测试接口的异常特性的一段代码,不是实际开发中的。
作者: 刘学明       时间: 2013-5-4 19:06
本帖最后由 刘学明    于 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:53
刘学明    发表于 2013-5-4 19:06
第一种情况 : public void method() throws RuntimeException  在声明抛出RuntimeException异常的时候编译 ...

谢谢指教。明白了。:lol
作者: 刘学明       时间: 2013-5-4 22:06
任江峰 发表于 2013-5-4 19:53
谢谢指教。明白了。

那就好 。。。:lol




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2