Google Guava Cache 文档指出:
刷新与驱逐并不完全相同。正如 LoadingCache.refresh(K) 中所指定的,刷新一个键会为该键加载一个新值,可能是异步的。刷新键时仍会返回旧值(如果有),与驱逐相反,驱逐强制检索等到重新加载值。
如果刷新时抛出异常,则保留旧值,并记录并吞下异常。
这种记录和吞咽异常在我的用例中非常糟糕,因为这意味着如果刷新引发异常,缓存的用户将继续在缓存中找到陈旧的数据。
如何确保刷新时引发异常,缓存开始返回 null 或调用 load 方法?