由于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("测试异常");
}

最新文章

  1. C#SerialPort如何读取串口数据并显示在TextBox上
  2. arcgis软件集合
  3. IOS开发之功能模块--输入框随着键盘的位置移动而移动
  4. LCD1602写自定义字符的Verilog源码
  5. Unity3D 中 用quaternion 来对一个坐标点进行旋转的初步体会
  6. SAE Java相关问题小结
  7. windows 10 笔记本关机不断电解决
  8. 百度翻译API
  9. JAVA与图形界面开发(Applet应用程序、AWT库、Swing)
  10. 【转】 Git 常用命令详解(二)----不错
  11. [Asp.net]常见word,excel,ppt,pdf在线预览方案(转)
  12. Linux 网络编程: gethostbyname( ), getservbyname( )
  13. 使用Scribefire在博客中插入语法高亮
  14. C语言与java语言中数据类型的差别总结
  15. Android中EditText显示明文与密文的两种方式
  16. JavaEESSM框架配置文件
  17. 005-mac下Java开发工具安装,idea,maven,git,node
  18. C++ 获取字符串中的所有汉字
  19. Eruda 一个被人遗忘的调试神器
  20. python进行数据分析

热门文章

  1. tomcat6-endpoint设计
  2. js 获取data-属性值
  3. [python IO学习篇] 补充.py文件是中文, .ini文件内容是中文
  4. API生命周期第三阶段:API实施模式,以及结合swagger和项目现状的最佳模式
  5. Welcome-to-Swift-09类和结构体(Classes and Structures)
  6. SparkStreaming 编程指南
  7. 搜索引擎快捷导航:一个简单的chrome插件(教程)
  8. BZOJ2326 [HNOI2011]数学作业 【矩阵快速幂】
  9. [SCOI2008]配对 (贪心,动态规划)
  10. jenkins项目数据位置