gpt4 book ai didi

java - Java 接口(interface)不声明任何异常。如何管理执行的检查异常?

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:24 39 4
gpt4 key购买 nike

假设我有以下我可能不会修改的 Java 接口(interface):

public interface MyInterface {
public void doSomething();
}

现在实现它的类是这样的:

class MyImplementation implements MyInterface {
public void doSomething() {
try {
// read file
} catch (IOException e) {
// what to do?
}
}
}

我无法从不读取文件中恢复过来。

RuntimeException 的子类显然可以帮助我,但我不确定这样做是否正确:问题是该异常不会记录在类和用户中类(class)的学生可能会得到那个异常(exception),但对解决这个问题一无所知。

我能做什么?


我们都同意:界面有问题。

我选择的方案

我最终决定编写一个 MyVeryOwnInterface 来扩展 MyInterface 并添加 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);
}
}
}

最佳答案

您遇到了 leaky abstractions 的问题.没有真正好的解决方案,使用 RuntimeException 几乎是您唯一可以做的事情。

可以说,这也是为什么检查异常是一个失败概念的一个例子。

关于java - Java 接口(interface)不声明任何异常。如何管理执行的检查异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2738827/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com