zoukankan      html  css  js  c++  java
  • 使用cacheBuilder时捕获内部指定异常

    由于cacheBuilder是另起线程获取,对call方法中的抛出的异常进行了封装。所以我们在最外层捕获时是无法直接指定异常类型捕获的,

    获取异常的原因判断实例类型

        public static void main(String[] args) {
            Cache<String, Boolean> cahceBuilder = 
                    CacheBuilder.newBuilder().expireAfterWrite(5, TimeUnit.SECONDS).build();
            String key="123";
            try{
                cahceBuilder.get(key, new Callable<Boolean>() {
                    @Override
                    public Boolean call() throws Exception {
                        //执行业务方法
                        bizMethon();
                        return true;
                    }
                });
            }catch(Exception e){
                //获取导致抛出此异常的原因,判断是否为指定异常实例
                Throwable cause = e.getCause();
                if(cause instanceof NullPointerException){
                    logger.error(String.format("捕获到指定异常:%s", e.getMessage()),e);
                }else{
                    logger.error(String.format("其他异常:%s", e.getMessage()),e);
                }
            }
        }
        
        //模拟业务方法,直接抛出异常
        public static void bizMethon() throws NullPointerException{
            throw new NullPointerException("测试异常");
        }
  • 相关阅读:
    十个一篇
    css等比例缩放
    windows高度和宽度相关文档
    希尔排序
    插入排序
    选择排序
    冒泡排序
    php面试题之面向对象
    前端面试题
    Python课习题笔记
  • 原文地址:https://www.cnblogs.com/Ebird/p/7066121.html
Copyright © 2011-2022 走看看