java - 如何捕获ExceptionInInitializerError?

标签 java static-initializer

我想安装某种全局处理程序来捕获任何ExceptionInInitializerError,当加载某个类时,它可能从任何静态 block 抛出。目前,它将堆栈跟踪转储到 stderr 并退出应用程序。我想使用我的日志框架记录堆栈跟踪,然后退出应用程序。可能吗?

最佳答案

看起来 Thread.UncaughtExceptionHandler 就是您正在寻找的。

这个answer将为您提供更多信息。

本质上,您需要尽快安装默认异常处理程序:

        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
        public void uncaughtException(Thread t, Throwable e) {
            if (e instanceof ExceptionInInitializerError) {
                // do something with you're exception
                // and than close application
                System.exit(-1); // passing 
            }
        }
    });

关于java - 如何捕获ExceptionInInitializerError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38170461/

相关文章:

c++ - 具有类成员的结构的静态初始化

java - 是否可以获得包含类(CDI)的引用?

java - flink + 卡夫卡 + JSON

java - 使用流总结列表

Java枚举反向查找最佳实践

php - 我应该如何弥补 PHP 中静态初始化器的不足?

Java - 来自静态初始化 block 内部的类类型

java - 如何隐藏主屏幕状态栏?或者一些隐藏而不修改主屏幕的应用程序?

java - 从 Maven 工具链确定 JDK 主目录

c# - 静态类中静态字段的初始化顺序