Java 如何捕获异常初始化错误?

Java 如何捕获异常初始化错误?,java,static-initializer,Java,Static Initializer,我想安装某种全局处理程序来捕获任何异常initializerror,当加载某个类时,这些异常可能会从任何静态块中抛出。当前,它将堆栈跟踪转储到stderr并退出应用程序。我想使用我的日志框架记录堆栈跟踪,然后退出应用程序。有可能吗?它看起来像线程。UncaughtExceptionHandler就是您正在寻找的 这将为您提供更多信息 本质上,您需要尽快安装默认异常处理程序: Thread.setDefaultUncaughtExceptionHandler(new Thread.

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

它看起来像线程。UncaughtExceptionHandler就是您正在寻找的

这将为您提供更多信息

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

        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 
            }
        }
    });

看起来像是Thread.UncaughtExceptionHandler就是您要查看的

这将为您提供更多信息

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

        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 
            }
        }
    });

也许您可以创建一个全局异常处理程序,并从中筛选出您的异常

示例

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
    public void uncaughtException(Thread t, Throwable e) {
        if (e instanceof ExceptionInInitializerError) {
            //Your handler code
        }
    }
});

也许您可以创建一个全局异常处理程序,并从中筛选出您的异常

示例

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
    public void uncaughtException(Thread t, Throwable e) {
        if (e instanceof ExceptionInInitializerError) {
            //Your handler code
        }
    }
});

谢谢,它起作用了。似乎System.exit不是必需的,因为JVM无论如何都会退出,所以我只是在处理程序中记录异常。谢谢,它可以工作。似乎System.exit不是必需的,因为JVM无论如何都会退出,所以我只在处理程序中记录异常。