最近使用线程池时,了解到了在子线程中抛出异常,主线程的处理方式。

Java中抛出 Exception 时必须使用 try..catch 块处理,但是抛出 RuntimeException 和 Error 时可以不使用 try..catch 块来处理,但是会导致线程中断。如下为抛出RuntimeException代码示例:

public class ChildThread implements Runnable{
@Override public void run() {
System.out.println("进入子线程");
throw new TestException();
}
}
class TestException extends RuntimeException{
public TestException(){
super("我是Exception");
}
}

但是抛出Exception时会要求处理:

在子线程中如果抛出异常的话,主线程是不会感受到这个异常的,并且也不能通过 try..catch 来捕获这个异常,但是如果子线程是继承了 Thread 的话是可以通过 Thread.setUncaughtExceptionHandler 方法来捕获到这个异常并进行处理的。如下为主线程捕获子线程异常代码示例:

public class ThreadTest {
public static void main(String[] args) {
new ThreadThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread t, Throwable e) { System.out.println(t.getName()+" "+e.getMessage());
}
});
System.out.println("主线程完成");
}
} class ThreadThread extends Thread {@Override public void run(){
System.out.println("ASDASDASD");
}
}

Java子线程异常及异常处理相关推荐

  1. Java子线程中的异常处理(通用)

    Java子线程中的异常处理(通用) 参考文章: (1)Java子线程中的异常处理(通用) (2)https://www.cnblogs.com/toplist/p/7594557.html 备忘一下.

  2. java 异常处理线程_转:Java子线程中的异常处理(通用)

    在普通的单线程程序中,捕获异常只需要通过try ... catch ... finally ...代码块就可以了.那么,在并发情况下,比如在父线程中启动了子线程,如何正确捕获子线程中的异常,从而进行相 ...

  3. java线程带来的异常,java多线程练习之捕获子线程异常例子

    本文章给大家介绍java多线程练习之捕获子线程异常一个实例,希望对大家会有所帮助. java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己 ...

  4. java 线程 try catch_Java子线程中的异常处理(通用)

    在普通的单线程程序中,捕获异常只需要通过try ... catch ... finally ...代码块就可以了.那么,在并发情况下,比如在父线程中启动了子线程,如何正确捕获子线程中的异常,从而进行相 ...

  5. JAVA Thread线程异常监控

    一.场景描述:单线程程序可以用try...catch捕获程序的异常,而在多线程程序的时候是无法使用try...catch捕获. 示例1:多线程发生异常,无法使用try...catch捕获问题 publ ...

  6. java 子线程退出_java – 在子线程完成执行之前主线程将退出吗?

    我读了2篇文章 在上面的文章中,在"线程终止"段中,它在Red中声明"如果父线程终止,它的所有子线程也会终止". 在上面的文章中,该页面的最后一行指出" ...

  7. python捕捉线程错误_python 主线程捕获子线程异常

    最近,在做一个项目时遇到的了一个问题,主线程无法捕获子线程中抛出的异常. 先看一个线程类的定义 ''' Created on Oct 27, 2015 @author: wujz ''' import ...

  8. Java-主线程捕获子线程异常并回滚子线程及主线程

    最近有个需求-当删除旧数据然后保存新数据时,只有删除旧数据成功同时保存新数据成功才可以不然的话就回滚,因为新数据保存那数据量比较大由子线程完成,然后删除数据是在主线程完成. 在方法上加上如下注解,看似 ...

  9. java 子线程传参_踩坑之Java执行Linux命令死锁阻塞挂起

    1 问题背景 最近在做一个需求需要调用linux下的某个脚本来对ai的模型进行训练,很简单的需求,我像往常一样写下如下的代码片段: Process process = Runtime.getRunti ...

最新文章

  1. linux简单设计与实现代码,《linux内核设计与实现》第五章(示例代码)
  2. jdbc之防sql注入攻击
  3. HIBERNATE与 MYBATIS的对比
  4. 【转】HttpModule和HttpHandler(续)
  5. 零点是结束,也是开始。
  6. 剖析Volley请求多次的原理
  7. 苹果Mac 默认浏览器如何更改?设置成自己习惯用的浏览器
  8. linux重启oracle 各种方法
  9. 百度网盘windows10镜像文件
  10. JavaScript|表格背景颜色改变页面
  11. Excel如何把同类数据合并到同一单元格
  12. mac安装php+mysql数据库_Mac环境下Nginx+PHP+MySQL的安装与配置
  13. 如何在线把pdf转换成word转换器
  14. 雨棚板弹性法计算简图_雨棚板的计算书
  15. TextView添加中划线、下划线等
  16. 力扣347 前 K 个高频元素 -- JS
  17. 银行储蓄管理系统 课程设计
  18. 关于python中的模块的定义、使用、优点及其使用cpy文件的介绍 简单易懂
  19. 共享单车登录显示服务器未响应,ofo共享单车服务为什么出现故障
  20. chrome 下使用维基百科

热门文章

  1. 卡卡IT学院模式:轻培训业态重线下资源整合
  2. 案例拆解:元气森林,这些企业微信裂变经验值得你学习
  3. R语言学习20150414
  4. srs直播 java开发,通过srs实现直播
  5. css彩色波浪动画,纯css实现波浪动画【转】
  6. 河北计算机四六级报名入口,四六级考试报名入口
  7. TreeATE自动化测试平台简介
  8. 学生成绩录入案例----python基础入门
  9. windows10访问ubuntu子系统中的文件的方法
  10. Java实现生成和解析二维码