项目中用ExecutorService多线程导入数据时,某次遇见数据进不去,断点调试发现是某处业务处理报错,但是自己在这块明明用try-catch抛出了Exception,确还是由于线程被判断死掉,查了一些多线程下异常处理的资料,实属坑的一批,大都说到ThreadPoolExecutor会将当前遇到的RuntimeException线程给Dead掉,我心想,这是什么霸道规则,难道多线程下try-catch还处理不了这中异常了??
逐点排查,发现是调用的某个第三方jar包中的方法将异常逐渐包装成了Throwable对象!实属坑,也就是这根本不是多线程的问题,就是抛出的是Throwable对象,用Exception接收不到!