【发布时间】:2010-04-30 20:48:44
【问题描述】:
假设我有以下 Java 接口,我可能不会修改:
public interface MyInterface {
public void doSomething();
}
现在实现它的类是这样的:
class MyImplementation implements MyInterface {
public void doSomething() {
try {
// read file
} catch (IOException e) {
// what to do?
}
}
}
我无法从不读取文件中恢复。
RuntimeException 的子类显然可以帮助我,但我不确定这样做是否正确:问题是该异常不会记录在类中,并且该类的用户可能会得到那个例外,对解决这个问题一无所知。
我能做什么?
我们都同意:接口有问题。
我选择的解决方案
我最终决定编写一个扩展MyInterface 的MyVeryOwnInterface,并在错误方法的签名中添加MyRuntimeException:
public interface MyVeryOwnInterface extends MyInterface {
public void doSomething() throws MyRuntimeException;
}
class MyImplementation implements MyVeryOwnInterface {
public void doSomething() throws MyRuntimeException {
try {
// read file
} catch (IOException e) {
throw new MyRuntimeException("Could not read the file", e);
}
}
}
【问题讨论】:
标签: java exception-handling interface