gpt4 book ai didi

java - 构建缓存失败应该抛出哪个异常?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:19 25 4
gpt4 key购买 nike

我有一个包含缓存(Set)的类,缓存是建立在实例化上的。我很困惑如果构建缓存失败(无法连接到数据库或某些数据库)我应该抛出哪个异常/错误。

class Provider {

public Provider() {
buildCache();
}

private void buildCache() {
try {
this.cache = getDataFromDb();
} catch (Exception ex) {
throw new ???
}
}
}

我想到的一个异常是 ExceptionInInitializerError,但 javadoc 说它是在初始化静态成员时抛出的。

我是否应该抛出一个 IllegalStateException 因为缓存没有构建所以这个类是无用的?

很明显,我可以创建自己的 ErrorOnBuildingCache 并抛出它,但我想知道 Java 库中是否有任何异常适合这种情况。

最佳答案

如果对应该抛出哪个异常有疑问,那么您代码的用户也会有疑问。因此,定义您自己的异常类型(例如 FailedToInitializeCacheException)并抛出它。这样就没有歧义了。

IllegalStateException 将是一个合理的回退位置,但您永远不应该使用 ExceptionInInitializerError(或任何以 Error 结尾的东西)——它很低级类加载器的东西,不要搞砸了。

关于java - 构建缓存失败应该抛出哪个异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6041690/

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