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无论如何都会退出,所以我只在处理程序中记录异常。