关于java:抛出异常的编译错误

compilation error with throwing exception

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class A {
    public void f(A a) {
        System.out.print("in A");
    }
}

public class B extends A {

    public static void main(String[] args) {
        B b = new B();
        A a = new A();
        b.f(b);
        b.f(a);
    }
}

为什么在B类中添加以下方法会出现编译错误?

众所周知,如果方法抛出某些东西,则不必在方法头中声明...

1
2
3
4
public void f(A a) {
    System.out.println("in B");
    throw new java.io.IOExeption();
}

It's known that if method throws something, it doesn't have to be declared in the method header

对于未经检查的异常,这是唯一的。 您的方法抛出IOException,这是一个已检查的异常,因此您必须捕获它或声明您抛出它,否则编译将失败。