//1.定义好一个线程组,所有里面的线程,都要受其管理
ThreadGroup threadGroup1 = new ThreadGroup("group1") {
/*2.这个方法在api中的定义为:当此线程组中的线程因为一个未捕获的异常而停止,并且线程没有安装特定 Thread.UncaughtExceptionHandler 时,
由 Java Virtual Machine 调用此方法。*/
public void uncaughtException(Thread t, Throwable e) {
//3.那么子类抛出异常,且未被手动捕获,就会执行这句代码
System.out.println(t.getName() + ": " + e.getMessage());
}
};
//4.这里用threadGroup1作为构造定义一个新线程,那么这个线程也就受threadGroup1的管理,一旦抛出异常
Thread thread1 =new Thread(threadGroup1, new Runnable() {
public void run() {
/*5.线程执行,就会抛出这个异常,这个异常是运行时异常且没有手动捕获,那么就什么执行threadGroup1定义好的uncaughtException
从而将这个线异常信息打印出来
*/
throw new RuntimeException("测试异常");
}
});
thread1.start(); |