考虑一个 Java 类层次结构,例如:
abstract class Exp { public void generate(); }
class EffExp extends Exp {...}
clas PureExp extends Exp {...}
class NewExp extends EffExp {...}
etc, etc.
generate
inside的实现NewExp
被更改为抛出一个IOException
.
public void generate() throws IOException {...}
其他实现generate
不做任何 IO 因此不需要抛出它。编译器抱怨并强迫我声明类层次结构中的所有方法以引发异常。这真的是唯一的出路吗?这似乎相当侵入。
我当然可以捕捉到它发生的异常, inside NewExp
,但这并没有什么意义。异常应该传播到顶部并停止程序执行。
这里更一般的问题是:如果您有一个相互覆盖的方法层次结构,是否都必须声明它们以抛出相同的异常集?