排查程序BUG时发现,在线程池的定时器内并未进行异常捕获,而是在定时器外try catch的,内部实现中从HashMap中Get数据,没有此KEY所有返回了NULL,后面没对NULL做处理,导致程序出现异常,然后上层又没捕获异常,结果就是程序可以正常运行,日志里也没打印异常,只是出现了ERROR并未有异常信息,并且有一些数据回填失败。

总结:

1. 异常处理无法覆盖异步回调,并不能捕获,异步回调中的异常。

  try 语句里的方法,如果允许在另外一个线程中,其中抛出的异常,是无法在调用者这个线程中捕获的。
每次启动定时器是新的线程,所以线程内的异常是捕获不到的,在排查数据回填失败的问题时,发现程序内部
抛出了异常,但是并没有捕获。
 public static void main(String[] args){try {new Thread(()->{HashMap<String, HashSet<String>> map = new HashMap<>();HashSet<String> set = map.get("A");set.size();System.out.println(1);}).start();Thread.sleep(10000);} catch (Exception e) {System.out.println("这里是无法捕获到thread里的异常的");e.printStackTrace();}}

2. map中get不到数据返回NULL要做空指针处理(value存储的是对象)

3. 可以自己解决的异常尽量不要使用trycatch(影响性能),异常能交给上层处理最好进行抛出,到上层统一处理

4. 不要使用trycatch做流程控制,条件控制

JAVA 捕获异常所遇BUG相关推荐

  1. Java 反射 不定参数bug

    Java 反射 不定参数bug 遇到的第一个关于反射的bug:java.lang.IllegalArgumentException: wrong number of arguments的问题解析如下: ...

  2. 发现Java程序中的Bug

    昨天在CSDN上阅读 "Java中十个常见的违规编码"这篇文章时,无意中找到了3个 "发现Java程序中的Bug"工具. 文章地址:http://www.csd ...

  3. java捕获异常和抛出异常_Java捕获多个异常,重新抛出异常

    java捕获异常和抛出异常 In Java 7, catch block has been improved to handle multiple exceptions in a single cat ...

  4. 副号显示无服务器,小升初||网报遇BUG,最全解决方案都在这里了

    原标题:小升初||网报遇BUG,最全解决方案都在这里了 在刚刚过去的幼升小网报中,相信不少家长都被各种BUG坑得哭笑不得!明明上传了自己孩砸的照片,但系统里要么显示别人家孩砸.要么就只有半张脸:就算填 ...

  5. java将异常写到text,java捕获异常信息存入txt文件示例

    捕获程序中出现的异常 可用于后期维护的必要性!做简单的测试 !package helpEntity; import java.io.BufferedReader; import java.io.Fil ...

  6. Java游戏守卫者_我的世界:当java版玩家遇上基岩版玩家,原来MC中也存在语言不通...

    原标题:我的世界:当java版玩家遇上基岩版玩家,原来MC中也存在语言不通 事情起因:有小伙伴投稿,说自己被同学拉入了一个<我的世界>群聊,自己原准备大侃特侃,但发现他们聊的东西跟自己玩的 ...

  7. [转载] java 捕获异常还是抛出异常

    参考链接: 捕获基类和派生类为异常 今天在看hadoop源码时,想想自己最近在做的那个系统,发现很多异常处理的方式不对,还是按照传统的异常处理方式(即:采用返回值来标识程序出现的异常情况).而hado ...

  8. Java开发项目常见BUG

    1. MySQL5.7版本sql_mode=only_full_group_by问题解决办法 原因:MySQL中的sql_mode属性中有only_full_group_by属性 only_full_ ...

  9. JAVA捕获异常小结

    上一节的小结: 1.已检查异常一定要处理,即除了RunTimeExceoption之外的异常子类. 2.一种消极的方法是一直向上抛出异常,不在函数本阶段处理,throws给主函数给JVM. 3.一种积 ...

最新文章

  1. java弹出微信扫一扫_JAVA实现调用微信js-sdk扫一扫
  2. Java 9 新特性
  3. Excel导入SQL SERVER,数字和字符会被系统自动置为NULL的解决方法
  4. ASP.NET Core Web Api之JWT VS Session VS Cookie(二)
  5. MySQL 高级 —— 索引实现的思考
  6. 出版物发行单位是指哪些_上海办理出版物经营许可证都需要哪些手续和资料?...
  7. centos7安装zabbix3.4
  8. 将本地数据库中的数据上传到云服务器数据库
  9. matlab plc控制系统设计,基于MATLAB的PLC温度监控系统设计
  10. 【Unity】问题记录:Some objects were not cleaned up when closing the scene
  11. Html table边框重叠存在空隙的问题
  12. 关于AI,值得推荐的五本好书
  13. 2021年Android工作或许更难找,面试资料分享
  14. WeChat 微信公众号开发步骤
  15. 5-6 uniapp 图片压缩
  16. angular 自定义打包文件名
  17. C语言中的%f和%lf的区别
  18. “身、口、意”三业,而其中尤其以口业为重,认为口业是:患苦之门,祸累之始。
  19. Linux学习笔记——系统函数IO
  20. 一线大厂面试官问:你真的懂电商订单开发吗?

热门文章

  1. 优秀的Android资源
  2. 对比 SQL Server 2005 和 Oracle
  3. jsp空白页面传html代码,echarts在HTML里测试一般,在jsp页面不显示,而且还把整个页面变成空白...
  4. mysql数据库的各种锁_关于MySQL各类锁的总结
  5. Vue框架之条件与循环的使用
  6. 1451C. String Equality
  7. php替换不区分大小写_PHP大小写问题:函数名和类名不区分,变量名区分
  8. unity 烘焙参数 设置_Unity通用渲染管线(URP)系列(九)——点光源和聚光灯
  9. ClassCastException:AdaptiveIconDrawable cannot be cast to BitmapDrawable
  10. A5D2应用程序无法启动问题