zoukankan      html  css  js  c++  java
  • Java 线程异常处理器

    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不同的是,异常处理器处理异常后,程序并不会继续执行,所以也不会正常结束。

  • 相关阅读:
    台州 OJ 3847 Mowing the Lawn 线性DP 单调队列
    洛谷 OJ P1417 烹调方案 01背包
    快速幂取模
    台州 OJ 2649 More is better 并查集
    UVa 1640
    UVa 11971
    UVa 10900
    UVa 11346
    UVa 10288
    UVa 1639
  • 原文地址:https://www.cnblogs.com/zj2012zy/p/5318971.html
Copyright © 2011-2022 走看看