未捕获异常的处理

当一个线程由于未捕获异常而退出时,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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,951评论 19 139
  • I set beside window of the train , watching the tree ribb...
    小豆豆59阅读 164评论 0 0
  • 飞越尘埃 文/岭坊 泥淖中的水与草,将在命运的熔炉中超升。 1、十字路口 三十三岁,三十三岁。卢天然口里不...
    岭坊阅读 235评论 0 0
  • 跟我走。跟我走。红的,白的,蓝的,黑色的石头。 翻一座山,越一道岭, 春夏不断, 马头并马头。 跟我走,跟我走。 ...
    盛瞳阅读 273评论 0 3
  • 众数娱乐圈有多少的绯闻男女朋友,这不欧阳娜娜和刘昊然出来“搞事情了”,网友喊话“在一起”,你咋看?反正我站旁边,才...
    潮流一起说阅读 382评论 0 0