我在Groovy/Java中使用UncaughtExceptionHandler有困难。
class UncaughtExceptionLogger implements Thread.UncaughtExceptionHandler {
@Override
void uncaughtException(Thread t, Throwable e) {
//TODO do some logging;
println "test";
}main..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时调用异常处理程序,但是不会发生这种情况。我做错了什么?
发布于 2018-09-26 07:41:24
似乎您必须用单独的线程来生成它:
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()
}https://stackoverflow.com/questions/52511120
复制相似问题