我有一个包含缓存(Set)的类,缓存是在实例化的基础上构建的.我很困惑,如果构建缓存失败(无法连接到数据库或某些),我应该抛出哪个异常/错误.
class Provider {
public Provider() {
buildCache();
}
private void buildCache() {
try {
this.cache = getDataFromDb();
} catch (Exception ex) {
throw new ???
}
}
}
Run Code Online (Sandbox Code Playgroud)
我脑子里有一个例外ExceptionInInitializerError,但是javadoc说它是在初始化静态成员时抛出的.
我应该抛出一个IllegalStateException原因,没有构建缓存,所以这个类是没用的?
很明显,我可以创建自己的ErrorOnBuildingCache并抛出它,但我想知道Java库中的任何异常是否适合这种情况.
如果您对应抛出哪个异常存在疑问,那么您的代码用户也会如此.因此,定义您自己的异常类型(例如FailedToInitializeCacheException)并抛出它.这种方式毫不含糊.
IllegalStateException将是一个合理的后备位置,但你永远不应该使用ExceptionInInitializerError(或任何结尾Error) - 这是低级别的类加载器的东西,不要搞乱它.
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |