为什么我们必须处理不抛出异常的方法的异常?

时间:2013-06-18 13:45:47

标签: java exception methods handle scjp

给出

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

1 个答案:

答案 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
}