使用cacheBuilder时捕获内部指定异常
2024-10-20 05:52:19
由于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("测试异常");
}
最新文章
- C#SerialPort如何读取串口数据并显示在TextBox上
- arcgis软件集合
- IOS开发之功能模块--输入框随着键盘的位置移动而移动
- LCD1602写自定义字符的Verilog源码
- Unity3D 中 用quaternion 来对一个坐标点进行旋转的初步体会
- SAE Java相关问题小结
- windows 10 笔记本关机不断电解决
- 百度翻译API
- JAVA与图形界面开发(Applet应用程序、AWT库、Swing)
- 【转】 Git 常用命令详解(二)----不错
- [Asp.net]常见word,excel,ppt,pdf在线预览方案(转)
- Linux 网络编程: gethostbyname( ), getservbyname( )
- 使用Scribefire在博客中插入语法高亮
- C语言与java语言中数据类型的差别总结
- Android中EditText显示明文与密文的两种方式
- JavaEESSM框架配置文件
- 005-mac下Java开发工具安装,idea,maven,git,node
- C++ 获取字符串中的所有汉字
- Eruda 一个被人遗忘的调试神器
- python进行数据分析
热门文章
- tomcat6-endpoint设计
- js 获取data-属性值
- [python IO学习篇] 补充.py文件是中文, .ini文件内容是中文
- API生命周期第三阶段:API实施模式,以及结合swagger和项目现状的最佳模式
- Welcome-to-Swift-09类和结构体(Classes and Structures)
- SparkStreaming 编程指南
- 搜索引擎快捷导航:一个简单的chrome插件(教程)
- BZOJ2326 [HNOI2011]数学作业 【矩阵快速幂】
- [SCOI2008]配对 (贪心,动态规划)
- jenkins项目数据位置