给出
public class ToBeTestHandleException{
static class A {
void process() throws Exception {
throw new Exception();
}
}
static class B extends A {
void process() {
System.out.println("B ");
}
}
public static void main(String[] args) {
A a = new B();
a.process();
}
}
为什么我们应该在行(a.process())处理异常?.B类的方法过程根本不会抛出异常? PS:这是一个SCJP问题。
答案 0 :(得分:3)
您已将B
个实例分配给A
类型的变量。由于A.process()
抛出异常,因此您的代码需要处理这种可能性。
想象一下,您将实例传递给另一个接受A
s:
public void doSomething(A a) {
a.process; // <--- we don't know this is a B, so you are forced to
// catch the exception
}