欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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的情况

相关标签: 报错 Java