美文网首页
捕获线程中发生的异常

捕获线程中发生的异常

作者: BestbpF | 来源:发表于2018-11-01 15:47 被阅读10次

    简述

    当线程中出现异常时,我们可以使用Thread自带的方法进行全局捕获

    方法

    • setUncaughtExceptionHandler
      捕获指定线程出现的异常
            Thread t1 = new Thread(){
                @Override
                public void run() {
                    Object a = null;
                    a.toString();
                }
            };
            t1.setName("线程t1");
            t1.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
                @Override
                public void uncaughtException(Thread t, Throwable e) {
                    System.out.println("线程:" + t.getName() + " 出现了异常:");
                    e.printStackTrace();
                }
            });
            t1.start();
    
    • setDefaultUncaughtExceptionHandler
      捕获所有线程出现的异常
    Thread
            .setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
                @Override
                public void uncaughtException(Thread t, Throwable e) {
                    System.out.println("线程:" + t.getName() + " 出现了异常:");
                    e.printStackTrace();
    
                }
            });
    
    Thread t1 = new Thread(){
        @Override
        public void run() {
            Object a = null;
            a.toString();
        }
    };
    t1.setName("t1");
    t1.start();
    
    Thread t2 = new Thread(){
        @Override
        public void run() {
            Object a = null;
            a.toString();
        }
    };
    t2.setName("t2");
    t2.start();
    

    相关文章

      网友评论

          本文标题:捕获线程中发生的异常

          本文链接:https://www.haomeiwen.com/subject/kzsxxqtx.html