未捕获异常的处理

2017-08-20  本文已影响41人  多喝水JS

当一个线程由于未捕获异常而退出时,JVM会把这个事件报告给应用程序提供的UncaughtExceptionHandler异常处理器。如果没有提供任何异常处理器,那么默认的行为是将栈追踪信息输出到System.err.

例子

public static void main(String[] args) {
        new Thread(new Runnable() {
            public void run() {
                int i = 1 / 0;

                System.out.println("dddddd");
            }
        }).start();

上面代码执行时将抛出零除异常,我并没有将它捕获,那么JVM如何处理的呢?

处理流程

进到调用的方法里看看: 可以看到,当JVM遇到未捕获的异常时,首先获取应用程序提供的UncaughtExceptionHandler异常处理器。 如果没提供的话就直接把栈追踪信息输出到System.err;
上一篇下一篇

猜你喜欢

热点阅读