0

给定

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 问题。

4

1 回答 1

4

您已将B实例分配给 type 的变量A。由于A.process()抛出异常,您的代码需要处理这种可能性。

想象一下,您将您的实例传递给另一个接受As 的方法:

public void doSomething(A a) {
  a.process; // <--- we don't know this is a B, so you are forced to 
             //      catch the exception
}
于 2013-06-18T13:49:13.333 回答