《Java多线程编程核心技术》读后感(十八)

线程中出现异常的处理

package Seven;

public class MyThread extends Thread {
    @Override
    public void run() {
        String username = null;
        System.out.println(username.hashCode());
    }

}
package Seven;

public class Main1 {
    public static void main(String[] args) {
        MyThread t = new MyThread();
        t.start();
    }
}

 

空指针异常,在java多线程技术中,可以对多线程中的异常进行捕获,使用的是UncaughtExceptionHandler类,从而可以对发生的异常进行有效的处理

package Seven;

import java.lang.Thread.UncaughtExceptionHandler;

public class Main2 {
    public static void main(String[] args) {
        MyThread t1 = new MyThread();
        t1.setName("线程t1");
        t1.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
            @Override
            public void uncaughtException(Thread t, Throwable e) {
                System.out.println("线程:" + t.getName() + " 出现了异常:");
                e.printStackTrace();
            }
        });
        t1.start();

        MyThread t2 = new MyThread();
        t2.setName("线程t2");
        t2.start();
    }
}

方法setUncaughtExceptionHandler()是给指定线程对象设置异常处理器

 

posted on 2017-11-19 17:04  Michael2397  阅读(219)  评论(0编辑  收藏  举报

导航