Google Guava 캐시를 사용하여 서비스 관련 객체로 캐시를 시도하고 있습니다. 캐시 미스에서, 나는 내 REST 클라이언트를 사용하여 객체를 가져온다. Guava CacheLoader가 사용자 정의 예외를 throw하고 catch합니다.
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에서