在J2SE 5.0之前,如果您想要统一处理某些执行绪的unchecked例外,您可以使用一个ThreadGroup来管理,您继承ThreadGroup,并重 新定义其uncaughtException()方法,而在J2SE 5.0之后,您不用这么麻烦,您可以让您的例外处理类别实作Thread.UncaughtExceptionHandler,并实现其 uncaughtException()方法,例如:
package onlyfun.caterpillar;
public class ThreadExceptionHandler
implements Thread.UncaughtExceptionHandler {
	public void uncaughtException(Thread t, Throwable e) {
		System.out.println(t.getName());
		e.printStackTrace();
	}
}
您可以使用Thread的setUncaughtExceptionHandler()方法来设定例外处理对象,例如:
ThreadExceptionDemo.java
package onlyfun.caterpillar;
public class ThreadExceptionDemo {
	public static void main(String[] args) {
		Thread thread = new Thread(new Runnable() {
			public void run() {
				// 除 0 的错误
				int n = 1/0;
			}
		}, "testThread");
		thread.setUncaughtExceptionHandler(
		new ThreadExceptionHandler());
		thread.start();
	}
}
在这个程序中,我们故意产生除零的例外,例外丢出后会由ThreadExceptionHandler对象来处理,执行结果如下:
testThread java.lang.ArithmeticException: / by zero at onlyfun.caterpillar.ThreadExceptionDemo$1.run( ThreadExceptionDemo.java:8) at java.lang.Thread.run(Unknown Source)