美文网首页
【多线程】java线程的未捕获异常,JVM处理机制

【多线程】java线程的未捕获异常,JVM处理机制

作者: 良辰夜 | 来源:发表于2018-05-08 00:15 被阅读0次

当线程出现未捕获异常(即抛出一个异常)

  1. JVM将调用Thread.dispatchUncaughtException();
/**
 * Dispatch an uncaught exception to the handler. This method is
 * intended to be called only by the JVM.
 */
private void dispatchUncaughtException(Throwable e) {
    getUncaughtExceptionHandler().uncaughtException(this, e);
}

2.getUncaughtExceptionHandler(),判断自己独属于CurrentThread的uncaughtExceptionHandler是否为null,不为null则返回返回UncaughtExceptionHandler,为null 则返回group (extends UncaughtExceptionHandler)

public UncaughtExceptionHandler getUncaughtExceptionHandler() {
        return uncaughtExceptionHandler != null ?
            uncaughtExceptionHandler : group;
    }

3.调用 uncaughtException()

如果返回是ThreadGroup的话,默认会一直找到顶层ThreadGroup(假如中间的ThreadGroup不修改),然后会找 Thread类共用的 defaultUncaughtExceptionHandler ,如果存在则调用,如果不存在,则 打印线程名字和异常

public void uncaughtException(Thread t, Throwable e) {
        if (parent != null) {
            parent.uncaughtException(t, e);
        } else {
            Thread.UncaughtExceptionHandler ueh =
                Thread.getDefaultUncaughtExceptionHandler();
            if (ueh != null) {
                ueh.uncaughtException(t, e);
            } else if (!(e instanceof ThreadDeath)) {
                System.err.print("Exception in thread \""
                                 + t.getName() + "\" ");
                e.printStackTrace(System.err);
            }
        }
    }

相关文章

  • 【多线程】java线程的未捕获异常,JVM处理机制

    当线程出现未捕获异常(即抛出一个异常) JVM将调用Thread.dispatchUncaughtExceptio...

  • Java多线程: 如何捕获多线程中的异常

    你处理过多线程中异常吗?如何捕获多线程中发生的异常?捕获子线程的异常与捕获当前线程的异常一样简单吗? 除了try ...

  • 多线程之线程属性

    线程属性 线程优先级 守护线程 线程组 处理未捕获异常的处理器 1. 线程优先级 在java中,每个线程都有一个...

  • Java面试题

    Java面试 Java、框架、JVM Java 基础、容器、多线程、反射、对象拷贝、Java web模块、异常模块...

  • 并发3 下

    线程属性:包括线程优先级,守护线程,线程组以及处理未捕获异常的处理器。 线程优先级 在java程序设计语言中,每一...

  • Android 学习流程

    1、java * 基础语法 * 面向对象 * 集合 * 多线程 * 异常 异常机制原理 自定义异常 * 输入、输出...

  • 深入理解JVM

    虚拟机内存模型中定义的访问操作如下图所示: java中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM...

  • java多线程中的未捕获异常处理器

    原理参考两篇博文https://blog.csdn.net/bluishglc/article/details/8...

  • JVM内存区域与多线程

    Java并发的机制的背后是Java虚拟机(JVM)的工作机制,本文从几个关于并发和多线程的疑问开始,引出Java内...

  • 面试-Java相关

    Java Java基础思想 Jvm相关 垃圾回收机制 多线程与进程 基础数据结构 基本设计模式 ClassLoader

网友评论

      本文标题:【多线程】java线程的未捕获异常,JVM处理机制

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