给定
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类的方法process根本不抛出异常? PS:这是一个 SCJP 问题。
最佳答案
您已将 B
实例分配给 A
类型的变量。由于 A.process()
引发异常,因此您的代码需要处理这种可能性。
假设您将实例传递给另一个接受 A
的方法:
public void doSomething(A a) {
a.process; // <--- we don't know this is a B, so you are forced to
// catch the exception
}
关于java - 为什么我们必须为不抛出异常的方法处理异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17170583/