Guava cache loadAll failed to return a value for key
程序员文章站
2022-04-28 09:30:34
...
报错
loadAll failed to return a value for
try {
if (!keysToLoad.isEmpty()) {
try {
Map<K, V> newEntries = loadAll(keysToLoad, defaultLoader);
for (K key : keysToLoad) {
V value = newEntries.get(key);
if (value == null) {
throw new InvalidCacheLoadException("loadAll failed to return a value for " + key);
}
result.put(key, value);
}
} catch (UnsupportedLoadingOperationException e) {
// loadAll not implemented, fallback to load
for (K key : keysToLoad) {
misses--; // get will count this miss
result.put(key, get(key, defaultLoader));
}
}
}
return ImmutableMap.copyOf(result);
}
这段代码意味着,所有的key必须要有value,如果没有缓存到,那么必然报错
解决
1、可以通过缓存value不存在的,指定一个特定的值作为所谓的“空值”,这种情况适用于,大面积key都可以覆盖到,只有极少数
2、可以在上层直接catch这个异常,然后什么都不做,这种情况适合很多key都找不到value的情况
上一篇: julia读取纯数字的文本数据方法
下一篇: 复合语句(常见报错)