重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章给大家介绍在Java子线程中怎么对异常进行处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
成都网站建设哪家好,找创新互联!专注于网页设计、重庆网站建设公司、微信开发、小程序开发、集团成都企业网站定制等服务项目。核心团队均拥有互联网行业多年经验,服务众多知名企业客户;涵盖的客户类型包括:成都高空作业车租赁等众多领域,积累了大量丰富的经验,同时也获得了客户的一致赞扬!常见错误
也许有人会觉得,很简单嘛,直接在父线程启动子线程的地方try ... catch一把就可以了,其实这是不对的。
原因分析
让我们回忆一下Runnable接口的run方法的完整签名,因为没有标识throws语句,所以方法是不会抛出checked异常的。至于RuntimeException这样的unchecked异常,由于新线程由JVM进行调度执行,如果发生了异常,也不会通知到父线程。
public abstract void run()
解决办法
那么,如何在父线程中捕获来自子线程的异常呢?楼主想到了3种常用方法,分享给大家。
方法一:子线程中try... catch...
最简单有效的办法,就是在子线程的方法中,把可能发生异常的地方,用try ... catch ... 语句包起来。子线程代码:
public class ChildThread implements Runnable { public void run() { doSomething1(); try { // 可能发生异常的方法 exceptionMethod(); } catch (Exception e) { // 处理异常 System.out.println(String.format("handle exception in child thread. %s", e)); } doSomething2(); } }