如果一个jar具有一个接口,该接口具有一个由另一个jar中的类实现的方法,并且该接口添加了引发已检查异常并在不重新编译实现类的情况下进行了部署,该怎么办?
最佳答案
我知道,也许有人认为最好让类加载器不捕获标头中的异常,并让您声明将其抛出到实现中。
但是,这是有效的Java
public interface GetFive {
int getFive() throws Exception;
}
public class GetFiveImpl implements GetFive {
int getFive() {
return 5;
}
}
这是有效的,因为即使您的界面指示您可以,也不需要引发异常。
无效的是在未捕获异常的块中使用
GetFive.getFive()
。块剧院中的GetFiveImpl.getFive()
不能捕获,这很好。即使您有一个在接口上工作的块,该块也是在永远不会引发异常的环境中编译的;因此,它将正常工作。不过,我不会将其作为一种惯例。
我对此进行了测试,结果证实了我的怀疑。这并不意味着这样做是一个好主意。但是,考虑了一段时间后,依赖的jar无法在不重新编译的情况下抛出异常,这将重新检查接口。