Thinking in Java学习笔记 Thread.UncaughtExceptionHandler接口实现捕获线程内异常

来源:互联网 发布:怪物猎人x桐花套数据 编辑:程序博客网 时间:2024/06/05 05:11

实现自定义类来实现Thread.UncaughtExceptionHandler接口,在unCaughtExceptionHandler方法中编写自已需要的处理代码

实现自定义的ThreadFactory,newThread的时候调用setUncaughtExceptionHandler方法来指定自定义的UncaughtExceptionHandler

使用自定的ThreadFactory来创建ExecutorService实例

运行线程,即可捕获线程中的异常



package com.test.concurrent;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ThreadFactory;public class CaptureUncaughtException {public static void main(String[] args) {// TODO Auto-generated method stubExecutorService exec=Executors.newCachedThreadPool(new MyThreadFactory());exec.execute(new UncaughtThread());}}class UncaughtThread implements Runnable{@Overridepublic void run(){Thread t=Thread.currentThread();System.out.println("uncaught exception:"+t.getUncaughtExceptionHandler());throw new RuntimeException("uncaught runtime exception");}}class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler{@Overridepublic void uncaughtException(Thread t, Throwable e) {// TODO Auto-generated method stubSystem.out.println("get Exception !!!:"+e);}}class MyThreadFactory implements ThreadFactory{@Overridepublic Thread newThread(Runnable r) {// TODO Auto-generated method stubThread t=new Thread(r);t.setUncaughtExceptionHandler(new MyUncaughtExceptionHandler());return t;}}


0 0