在J2SE
5.0之前,如果您想要統一處理某些執行緒的unchecked例外,您可以使用一個ThreadGroup來管理,您繼承ThreadGroup,並重
新定義其uncaughtException()方法,而在J2SE
5.0之後,您不用這麼麻煩,您可以讓您的例外處理類別實作Thread.UncaughtExceptionHandler,並實現其
uncaughtException()方法,例如:
- ThreadExceptionHandler.java
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()方法來設定例外處理物件,例如:
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)
|
|