Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编译错误并引发异常_Java_Compilation_Throws - Fatal编程技术网

Java 编译错误并引发异常

Java 编译错误并引发异常,java,compilation,throws,Java,Compilation,Throws,为什么在B类中添加以下方法会出现编译错误 众所周知,如果方法抛出某些东西,则不必在方法头中声明它 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类中添加以下方法会出现编译错误

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

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);
    }
}
众所周知,如果方法抛出某些东西,则不必在方法头中声明它


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

不必在方法头中声明未选中的异常?在给定的示例中,这是编译器出错的唯一原因吗?不,它们不必在方法头中声明,您也没有义务用try/catch来包围它们。在您的代码中,我没有看到任何其他可能导致编译失败的内容。
public void f(A a) { 
    System.out.println("in B"); 
    throw new java.io.IOExeption();
}