当前位置:  开发笔记 > 编程语言 > 正文

如何在开发过程中从一个地方的不同线程中捕获所有未捕获的异常?

如何解决《如何在开发过程中从一个地方的不同线程中捕获所有未捕获的异常?》经验,为你挑选了1个好方法。

我有一个不小的多线程应用程序与GUI和套接字通信.在开发过程中,我发现有时会有一些异常没有被捕获和记录.如果有的话,我必须盯着控制台才能得到它们.

有没有办法在一个地方捕获来自不同线程(包括EDT)的未捕获的异常,在main()中说,并记录它们?我在main()中放了一个try-catch 来捕获Throwable,但它不起作用.

编辑:

更具体的,我有Executors.newCachedThreadPool()Runnable接口秒.我不想在很多情况下使用Callable,因为我不想阻止我的调用线程.那么如何从Runnables中捕获异常?

同时,我怎么能赶上ü ncaught例外,摇摆EDT



1> nogard..:

我建议使用方法Thread.setDefaultUncaughtExceptionHandler为未捕获的异常设置UncaughtExceptionHandler类型的自定义处理程序.当线程由于未捕获的异常而即将终止时,JVM将调用此处理程序.

    Thread.setDefaultUncaughtExceptionHandler((Thread t, Throwable e) -> {
            System.out.println(t + " throws exception: " + e);
    });

UPD:

至于摇摆EDT情况下,我觉得这是很好的答案在这里.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有