首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 線程異常處理機制:UncaughtExceptionHandler 詳解與實戰

     編輯:Java 綜合教學

Thread.UncaughtExceptionHandler 介紹

Thread.UncaughtExceptionHandler 是 Thread 類的一個靜態內部接口,專門用於處理線程運行過程中拋出的未捕獲異常。接口定義唯一方法:

void uncaughtException(Thread t, Throwable e)

參數 t 代表發生異常的線程,e 代表拋出的異常對象。當線程因未處理的異常即將終結前,JVM 會自動查找並調用該線程的異常處理器。

設置異常處理器的兩種方式

  • 全局默認處理器:Thread.setDefaultUncaughtExceptionHandler(handler),對所有線程實例生效;
  • 單個線程專用處理器:thread.setUncaughtExceptionHandler(handler),僅對指定線程對象生效。

代碼示例

public class UnCaughtExceptionHandlerTest {
    static class MyHandler 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 MyHandler());
        int a = 5 / 0; // 拋出 ArithmeticException
        System.out.println("normal over!"); // 不會執行
    }
}

執行結果與關鍵區別

Thread[main,5,main] 異常:java.lang.ArithmeticException: / by zero

關鍵點:異常處理器處理完異常後,程序不會繼續執行,也不會正常結束。這與 try-catch 捕獲異常後可繼續執行有本質區別,適合用於日誌記錄、資源清理、錯誤上報等「善後」場景,而非業務流程恢復。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved