java.lang.ThreadGroup.uncaughtException()%uA0方法被调用的Java虚拟机时,该线程组中的线程停止,因为未捕获的异常,线程没有安装特定的Thread.UncaughtExceptionHandler。
声明
以下是java.lang.ThreadGroup.uncaughtException()方法的声明
public void uncaughtException(Thread t, Throwable e)
参数
-
t%uA0-- 这是将要退出线程。
-
e%uA0-- 这是未捕获的异常。
返回值
此方法不返回任何值。
异常
-
NA
例子
下面的例子显示java.lang.ThreadGroup.uncaughtException()方法的使用。
package com.yiibai import java.lang.* public class ThreadGroupDemo implements Runnable { public static void main(String[] args) { ThreadGroupDemo tg = new ThreadGroupDemo() tg.func() } public void func() { try { // create a new ThreadGroup and a child for that ThreadGroup. newThreadGroup pGroup = new newThreadGroup("ParentThreadGroup") newThreadGroup cGroup = new newThreadGroup (pGroup,"ChildThreadGroup") // create another thread Thread thr2 = new Thread(pGroup, this) System.out.println("Starting " + thr2.getName() + "...") // this will call run() method thr2.start() // create third thread Thread thr3 = new Thread(cGroup, this) System.out.println("Starting " + thr3.getName() + "...") // this will call run() method thr3.start() try { Thread.sleep(500) } catch(InterruptedException ex) {} // interrupt the two threads thr2.interrupt() thr3.interrupt() // block until the other threads finish thr2.join() thr3.join() } catch(InterruptedException e) { System.out.println(e.toString()) } } public void run() { try { System.out.print(Thread.currentThread().getName()) System.out.println(" executing...") while(true) { Thread.sleep(500) } } catch(InterruptedException e) { Thread currThread = Thread.currentThread() System.out.print(currThread.getName()) System.out.println(" interrupted:" + e.toString()) // rethrow the exception throw new RuntimeException(e.getMessage()) } } } class newThreadGroup extends ThreadGroup { newThreadGroup(String n) { super(n) } newThreadGroup(ThreadGroup parent, String n) { super(parent, n) } public void uncaughtException(Thread t, Throwable e) { System.out.println(t + " has unhandled exception:" + e) } }
让我们来编译和运行上面的程序,这将产生以下结果:
Starting Thread-0... Starting Thread-1... Thread-0 executing... Thread-1 executing... Thread-0 interrupted: java.lang.InterruptedException: sleep interrupted Thread[Thread-0,5,ParentThreadGroup] has unhandled exception: java.lang.RuntimeException: sleep interrupted Thread-1 interrupted: java.lang.InterruptedException: sleep interrupted Thread[Thread-1,5,ChildThreadGroup] has unhandled exception: java.lang.RuntimeException: sleep interrupted