异常处理和传播番石榴缓存

时间:2013-09-10 13:56:42

标签: java caching guava callable

我有一个缓存实现,其中作为Callable实现的一部分(即调用方法),我引发了一个Checked异常(从Exception中分类)。请参阅下面的代码段。这是从缓存加载过程中抛出自定义异常的正确方法吗?我的其余代码强烈依赖于CustomCheckedException处理,所以我想确保下面的方法是正确的方法!方法doSomething抛出CustomCheckedException。

public class ABiggerClass {

    ...

    private SomeClass getSomeData(ParamClass param) throws CustomCheckedException {

        SomeClass d = null;
        try {
            d = someCache.get(getCacheKey(),
                    new CacheLoader(param));
        } catch (ExecutionException e) {
            e.printStackTrace();
            Throwables.propagateIfInstanceOf(e.getCause(),
                    CustomCheckedException.class);
        }

        return d;
    }

    private class CacheLoader implements Callable<SomeClass> {

        private ParamClass param;

        @Override
        public SomeClass call() throws Exception {

            SomeClass result = new SomeClass();

            result.doSomething(param);

            return result;
        }

        public CacheLoader(ParamClass param) {
            super();
            this.param = param;
        }
    }

    ...
}

0 个答案:

没有答案