【问题标题】:Logging uncaught exceptions in threads created by third-party code in web application在 Web 应用程序中由第三方代码创建的线程中记录未捕获的异常
【发布时间】:2012-06-11 09:39:00
【问题描述】:

我怀疑由我的 Web 应用程序使用的第三方 jar 创建的线程可能会引发异常,但没有捕获它。但是,我在日志文件中没有看到任何证据。如何强制将所有未捕获的异常转储到日志文件?这是针对在 Glassfish 中运行的网络应用程序。

【问题讨论】:

  • 几乎我知道的任何容器都会捕获异常(或 Throwable),因此 Thread.setUncaughtExceptionHandler 无济于事。解决方案是将调用包装在 try/catch

标签: java multithreading glassfish uncaught-exception


【解决方案1】:
【解决方案2】:

您可以使用Thread's setDefaultUncaughtExceptionHandler 静态方法设置默认的未捕获异常处理程序:

Thread.setDefaultUncaughtExceptionHandler( new Thread.UncaughtExceptionHandler() {
            public void uncaughtException( final Thread t, final Throwable e ) {
                ...

【讨论】:

    【解决方案3】:

    事实证明,Glassfish 不需要这样做,因为 Glassfish 已经这样做了 - 但我在日志中查看了错误的位置。

    异常被打印到主 server.log 文件 - 而不是我的应用程序自己的 log4j 日志文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 2015-08-20
      • 2023-03-11
      相关资源
      最近更新 更多