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,这是一个已检查的异常,因此您必须捕获它或声明您抛出它,否则编译将失败。
-
未经检查的异常永远不必在方法头中声明? 并且它是给定示例中编译器错误的唯一原因吗?
-
不,它们不必在方法标题中声明,并且您没有义务用try / catch包围它们。 我没有看到任何可能在代码中编译失败的内容。