Java 未编译的程序

Java 未编译的程序,java,Java,我正在读关于继承和异常的书。当我试图在控制台中编译下面的代码时,我得到了编译器错误。我还是不明白为什么。但是如果我在类B中更改方法名称,一切都会正常工作。请帮忙 这是我的密码: import java.io.IOException; class A { public void print() throws IOException { System.out.println("In Class A."); throw new IOException("

我正在读关于继承和异常的书。当我试图在控制台中编译下面的代码时,我得到了编译器错误。我还是不明白为什么。但是如果我在类B中更改方法名称,一切都会正常工作。请帮忙

这是我的密码:

import java.io.IOException;

class A {  

    public void print() throws IOException {
        System.out.println("In Class A.");
        throw new IOException("Printed in A.");
    }

}

class B extends A {

    public void print() throws Exception {
        System.out.println("In Class B.");
        throw new Exception("Printed in B.");
    }

}

public class TestPrint {

    public static void main (String args[]) {
        B b = new B();
        try {
            b.print();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

重写的方法不能抛出层次结构中高于原始方法的已检查异常

Exception
IOException
的超类

因此,您的
print()
方法子类(
B
)可以抛出
IOException
IOException
的任何子类

更改您的类
B
,如下所示:

class B extends A {

    public void print() throws IOException {
        System.out.println("In Class B.");
        throw new IOException("Printed in B.");
    }

}

您不能在重写方法的继承层次结构中抛出更高的异常,即
IOException
是exception类的子类


您可以在重写的方法中抛出属于一小时前由Gokul Nath编写的
IOException
子类的任何异常!!