Google Guavaキャッシュを使用してサービス関連のオブジェクトをキャッシュしようとしています。キャッシュミスでは、オブジェクトをフェッチするためにRESTクライアントを使用します。私は、次の方法でこれを行うことができますことを知っている:Guava CacheLoaderがカスタム例外をスロー&キャッチ
CacheLoader<Key, Graph> loader = new CacheLoader<Key, Graph>() {
public Graph load(Key key) throws InternalServerException, ResourceNotFoundException {
return client.get(key);
}
};
LoadingCache<Key, Graph> cache = CacheBuilder.newBuilder().build(loader)
は今、client.getKey(Key k)
は実際にInternalServerException
とResourceNotFoundException
をスローします。このキャッシュインスタンスを使用してオブジェクトを取得しようとすると、例外がExecutionException
としてキャッチされます。
try {
cache.get(key);
} catch (ExecutionException e){
}
しかし、私は特にキャッチし、私が定義されていたCacheLoaderが(すなわち。InternalServerException
とResourceNotFoundException
)を投げている例外を処理したいと思います。 ExecutionException
のインスタンスは、どちらかの作業負荷の署名を引き起こす私自身の例外の一つであるかどうかをチェックする場合
は、私はよく分からない()メソッドは、実際にException
ないExecutionException
スローします。 instanceof
を使用することができたとしても、それは非常にきれいに見えません。これに対処するための良いappraochesはありますか? javadocsから