Thread.UncaughtExceptionHandler 是Thread類的一個靜態內部接口,該接口只有一個方法:
void uncaughtException(Thread t, Throwable e),其中t代表出現異常的線程,e代表拋出的異常。
如果線程執行過程中拋出了一個未處理的異常,則會在線程結束前找到對應的未處理異常處理器,調用上面的方法,處理該異常。
Thread 類提供了兩個方法用來設置異常處理器
static setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) 為該線程類的所有對象都設置默認的異常處理器。
setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) 為指定的線程對象設置異常處理器。
示例如下:
public class UnCaughtExceptionHandlerTest {
static class UnCaughtExceptionHandler implements Thread.UncaughtExceptionHandler{
@Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println(t + " 異常:" + e);
}
}
public static void main(String[] args) {
Thread.currentThread().setUncaughtExceptionHandler(new UnCaughtExceptionHandler());
int a = 5 / 0;
System.out.println("normal over!");
}
}
執行結果
Thread[main,5,main] 異常:java.lang.ArithmeticException: / by zero
由上可以看出,與catch不同的是,異常處理器處理異常后,程序並不會繼續執行,所以也不會正常結束。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。