zoukankan      html  css  js  c++  java
  • 008 线程异常的研究

    一 .概述

      我们知道一个线程运行之后,它会另外开启一个线程栈来完成自己的任务的运行,此时异常的捕获就是一个问题.


    二 .异常的演示 

    public static void main(String[] args) {
            try {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        throw new RuntimeException();
                    }
                }).start();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    我们运行上述的程序,结果如下:  

    Exception in thread "Thread-0" java.lang.RuntimeException
        at com.trek.concurrency.exception.ExceptionTest$1.run(ExceptionTest.java:10)
        at java.lang.Thread.run(Thread.java:745)

    我们发现我们根本无法捕获线程抛出的异常,仅仅就是打印了一个线程的堆栈信息.


    三 . 使用线程异常处理器完成任务 

    public class ExceptionHandler {
        
        static class Handler implements UncaughtExceptionHandler{
            @Override
            public void uncaughtException(Thread t, Throwable e) {
                //在此处我们只需要打印一下信息就好了
                System.out.println("线程的名字: "+t.getName());
                System.out.println(e);
            }
        }
        
        public static void main(String[] args) {
            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    throw new RuntimeException("我抛出了一个异常信息");
                }
                
            });
            thread.setUncaughtExceptionHandler(new Handler());
            thread.start();
        }
    }

    首先,我们定义了一个内部类为异常处理器.

      然后我们在创建线程的时候绑定一个异常处理器对象的实例.

      当我们的线程抛出一个异常的时候,异常处理器就会捕获这个异常.

    我们查看结果:  

    线程的名字: Thread-0
    java.lang.RuntimeException: 我抛出了一个异常信息

    我们发现线程抛出的异常信息我们可以捕获到了.

  • 相关阅读:
    ehcarts绘制一个可以拖动的两条曲线的效果
    bootstrap-table如何根据不同传值进行渲染
    语音播报功能
    webpack命令监测文件变化
    webpacck打包完react后引入到html文件中报错:Target container is not a DOM element...
    react app相关知识
    redux-devtools安装
    react-devtools超级简单安装教程
    react-router v3和v4区别
    foreach循环的跳出
  • 原文地址:https://www.cnblogs.com/trekxu/p/8995738.html
Copyright © 2011-2022 走看看