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