zoukankan      html  css  js  c++  java
  • JAVA线程全局异常处理

      大家平时写线程很多,但可能很少关注如何捕获线程的全局异常。其实jdk提供了两种捕获全局异常的方法,一种是基于整个线程类(staticsetDefaultUnaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)),一种基于线程的一个对象(setUncaughtExceptionHandler(Thread.UncaughtExceptionHander eh))。

      下面是基于线程的一个对象的示例:

      

    /**
     * 主线程
     */
    public class MainThread extends Thread implements Thread.UncaughtExceptionHandler {
    
        public static void main(String[] args){
            new MainThread().start();
        }
    
        public void run(){
            ChildThread child=new ChildThread();
            child.setUncaughtExceptionHandler(this);
            child.start();
        }
    
        /**
         * 获得子线程异常
         * @param t
         * @param e
         */
        @Override
        public void uncaughtException(Thread t, Throwable e) {
            System.out.println("以下为子线程异常:");
            e.printStackTrace();
        }
    }
    /**
     * 子线程
     */
    public class ChildThread extends Thread{
    
        public void run(){
            int a=Integer.parseInt("sdfdf");
        }
    }

    执行主线程的main方法启动子线程,此时主线程uncaughtException会捕获子线程的异常,执行结果如下:

    以下为子线程异常:
    java.lang.NumberFormatException: For input string: "sdfdf"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.lang.Integer.parseInt(Integer.java:492)
        at java.lang.Integer.parseInt(Integer.java:527)
        at net.hsh.util.ChildThread.run(ChildThread.java:9)
  • 相关阅读:
    mysqldump 逻辑备份和物理备份
    mysql备份
    MySQL日志
    mysql 查询缓存
    Error: xz compression not available的解决办法
    rsync + crontab + expect 快速搭建同步
    同步文件,不需要密码
    logstash 值得收藏的
    MySQL5.7主从,单slave多master
    微信代扣签名
  • 原文地址:https://www.cnblogs.com/myzhijie/p/4835638.html
Copyright © 2011-2022 走看看