Java 多线程-线程异常处理
来源:互联网 发布:阿里巴巴代销传淘宝 编辑:程序博客网 时间:2024/06/05 03:58
- Java 线程的run 方法不能向外抛出异常,一旦在线程中出现未捕获的异常,就会导致线程死亡。如代码:
public static void test1() { Thread t1 = new Thread(new Runnable() { @Override public void run() { int i = 1 / 0;//这里会抛出 / by zero 异常。 } }, "ex-Thread01"); t1.start(); }
在run 外如何捕获线程的异常呢? java 提供了一个异常处理器,默认的异常处理器是线程组ThreadGroup,在这里我做详细介绍,让我们看看如果为所有的线程设置一个异常处理器,达到我捕获线程的异常的需求。
创建线程处理器
/**线程处理器
* @author BOBO
* @Date 2017-07-25
*/
class ThreadUtil implements UncaughtExceptionHandler {
@Overridepublic void uncaughtException(Thread t, Throwable e) { // TODO 测试线程处理器 System.out.println(String.format(" %s Thread exception", t.getName())); e.printStackTrace();}
}
设置所以的线程处理器
static ThreadUtil thUtil;public static void main(String[] args) { // 设置所以的线程的线程处理器 Thread.setDefaultUncaughtExceptionHandler(thUtil == null ? thUtil = new ThreadUtil() : thUtil); // 最简单的线程处理器测试1 test1();}
运行结果
ex-Thread01 Thread exception java.lang.ArithmeticException: / by zero at com.boo.ex.ex_javaes.th.Domes02$1.run(Domes02.java:25) at java.lang.Thread.run(Unknown Source)
相关API说明
static void setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler ueh);
为所有线程设置处理器
与之对应的
void setUncaughtExceptionHandler(UncaughtExceptionHandler ueh);
设置处理器
void uncaughtException(Thread t, Throwable e);
异常回掉方法
阅读全文
0 0
- Java 多线程-线程异常处理
- [疯狂Java]多线程:线程组、线程/组内异常处理
- JAVA多线程——线程运行时异常的处理
- Java多线程编程7--线程中的异常处理
- 《java多线程编程核心技术》读书笔记6:线程中的异常处理
- java 多线程异常处理
- Java多线程异常处理
- java 多线程 异常处理
- Java 线程异常处理
- Java多线程-捕获线程异常
- java多线程中的异常处理
- java多线程中的异常处理
- java多线程中的异常处理
- java 多线程中的异常处理
- java多线程中的异常处理
- java线程池异常处理
- java线程异常的处理
- java [内部类]-[异常]-[多线程]-[线程池]
- android 自定义适配器MyAdapter
- CC2541 BLE源码阅读知识积累之外设从机Peripheral工作模式
- vimrc配置
- Snacktower 水题模拟
- 实训第二天
- Java 多线程-线程异常处理
- xynuoj 求两个数中的较大者
- Mybatis快速入门
- u3d
- 【Web开发技术】Web开发、Tomcat组成结构、技术介绍
- 在Ubuntu上编译生成Windows程序
- 20170725
- 专访平安科技首席科学家肖京:平安智能化的甜蜜与辛酸
- 手机访问PC站自动跳转手机站