在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)