当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。