Java 中还是对异常有限制的——在继承和覆盖方法的过程中,异常声明只能越变越小。这是因为如果不这么做,继承和覆盖的方法声明了新的异常声明,那么在对象的向上转型并调用该方法时肯定会出现问题!
异常声明越变越小有两层意思:
1)继承和覆盖的方法只声明部分基类的异常声明。
2)继承和覆盖的方法声明基类声明异常的派生类。
但是异常的限制对构造器不起作用!派生类的构造器可以声明任何的异常,但是它必须声明基类的构造方法的异常。还有就是构造器无法捕获基类构造器抛出的异常。
异常声明越变越小有两层意思:
1)继承和覆盖的方法只声明部分基类的异常声明。
2)继承和覆盖的方法声明基类声明异常的派生类。
但是异常的限制对构造器不起作用!派生类的构造器可以声明任何的异常,但是它必须声明基类的构造方法的异常。还有就是构造器无法捕获基类构造器抛出的异常。