我在 Groovy/Java 中使用 UncaughtExceptionHandler
时遇到问题。
class UncaughtExceptionLogger implements Thread.UncaughtExceptionHandler {
@Override
void uncaughtException(Thread t, Throwable e) {
//TODO do some logging;
println "test";
}
主要..groovy
def main(){
def handler = new UncaughtExceptionLogger();
Thread.defaultUncaughtExceptionHandler = handler
String s;
s.charAt(10); // causes a NullPointerException but the exception handler is not called
}
main();
为什么我期望在抛出 NullPointerException 时调用异常处理程序,但这并没有发生。我做错了什么?
最佳答案
似乎你必须用单独的线程生成它:
class UncaughtExceptionLogger implements Thread.UncaughtExceptionHandler {
@Override
void uncaughtException(Thread t, Throwable e) {
//TODO do some logging;
println "test";
}
}
def main(){
Thread.defaultUncaughtExceptionHandler = new UncaughtExceptionLogger()
String s;
s.charAt(10); // causes a NullPointerException but the exception handler is not called
}
Thread.start {
main()
}
关于java - UncaughtExceptionHandler 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52511120/