【发布时间】:2012-08-06 20:41:46
【问题描述】:
假设在 Java 中,我使用的是一个相当通用的预先存在的接口
public interface Generator {
public String generate();
}
我有自己的课
public class FromFileGenerator implements Generator {
...
public String generate() throws FileNotFoundException {
String output = //read from some file
return file;
}
}
Java 编译器对我大喊大叫,因为 generate() 的实现包含原始签名中未指定的异常 (FileNotFoundException)。但是,异常显然不属于接口,但在实现类中也不容忽视。如何在不默默失败的情况下解决这个问题?
【问题讨论】:
-
接口定义合约。检查的异常是方法签名的一部分,因此也是方法契约的一部分。你必须履行那个确切的契约来实现一个接口。
-
@pst - 不完全是。实现方法不必必须声明为抛出它覆盖的方法的所有检查异常;它只是不能添加任何新的检查异常。
-
@TedHopp 啊。内存库已更正。谢谢 :) 我想这是有道理的。
标签: java exception exception-handling interface overriding