當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Thread UncaughtExceptionHandler用法及代碼示例


exception 是不需要的或意外的事件,它發生在程序執行期間(即運行時),它會擾亂程序指令的正常流程。

在本文中,我們將了解如何實現Thread.UncaughtExceptionHandler。

在實現處理程序之前,我們先通過一個例子來了解一下異常是如何引起的:


public class GFG { 
  
    public static void main(String args[]) 
    { 
        System.out.println(10 / 0); 
    } 
} 

上述代碼的輸出是

Exception in thread "main"
 java.lang.ArithmeticException:
 / by zero at Demo.main(GFG.java:5)

但是,如果我們希望重寫internal working of JVM,以便在發生異常時顯示自定義消息,我們可以使用 Thread.UncaughtExceptionHandler 來處理它。

java.lang.Thread 類的 setDefaultUncaughtExceptionHandler() 方法用於重寫 JVM 處理未捕獲異常的方式。

用法:

public static void setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler eh)

參數:該方法采用類型的對象UncaughtExceptionHandler作為參數。

下麵是說明 setDefaultUncaughtExceptionHandler() 方法的示例:

示例 1:讓我們嘗試創建一個實現 Thread 類中的接口 UncaughtExceptionHandler 的類來處理被 0 除的異常,如下所示:


// Java program to demonstrate 
// the exception handler 
  
// Creating a random class to 
// implement the interface 
class Random 
    implements Thread 
                   .UncaughtExceptionHandler { 
  
    // Method to handle the 
    // uncaught exception 
    public void uncaughtException( 
        Thread t, Throwable e) 
    { 
  
        // Custom task that needs to be 
        // performed when an exception occurs 
        System.out.println( 
            "Welcome to GeeksforGeeks"); 
    } 
} 
  
public class GFG { 
  
    public static void main(String[] args) 
    { 
  
        // Passing the object of the type 
        // UncaughtExceptionHandler to the 
        // setter method 
        // setDefaultUncaughtExceptionHandler() 
        Thread 
            .setDefaultUncaughtExceptionHandler( 
                new Random()); 
  
        System.out.println(10 / 0); 
    } 
} 

輸出:

Welcome to GeeksforGeeks

注意:上麵的代碼在在線 IDE 上不起作用,因為在線 IDE 不授予覆蓋異常處理程序的權限。在這裏,設置DefaultUncaughtExceptionHandler()方法,改變字段默認UncaughtExceptionHandler從初始值 null 到 Random 類。這uncaughtException()的方法隨機的當發生未捕獲的異常時,調用該類。

示例 2:在此示例中,讓我們拋出一個新異常並了解如何處理異常。


// Java program to demonstrate 
// the exception handler 
  
// Creating a random class to 
// implement the interface 
class Random 
    implements Thread.UncaughtExceptionHandler { 
  
    // Method to handle the 
    // uncaught exception 
    public void uncaughtException( 
        Thread t, Throwable e) 
    { 
  
        // Custom task that needs to be 
        // performed when an exception occurs 
        System.out.println( 
            "Exception Handled " + e); 
    } 
} 
  
public class GFG { 
  
    public static void main(String[] args) 
        throws Exception 
    { 
  
        // Passing the object of the type 
        // UncaughtExceptionHandler to the 
        // setter method 
        // setDefaultUncaughtExceptionHandler() 
        Thread.setDefaultUncaughtExceptionHandler( 
            new Random()); 
  
        throw new Exception("Exception"); 
    } 
} 

輸出:

Exception Handled Exception



相關用法


注:本文由純淨天空篩選整理自abhijeet_rai大神的英文原創作品 Thread UncaughtExceptionHandler in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。