我想安装某种全局处理程序来捕获ExceptionInInitializerError
在加载某个类时可能从任何静态块中抛出的任何内容。目前它将堆栈跟踪转储到 stderr 并退出应用程序。我想使用我的日志框架记录堆栈跟踪,然后退出应用程序。是否可以?
问问题
554 次
2 回答
1
看起来 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
}
}
});
于 2016-07-03T13:37:36.787 回答
1
也许您可以创建一个全局异常处理程序,然后将您的异常过滤掉。
例子
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread t, Throwable e) {
if (e instanceof ExceptionInInitializerError) {
//Your handler code
}
}
});
于 2016-07-03T13:40:39.423 回答