public class ThreadHandler {
private volatile static boolean flag = false;
public static void main(String[] args) throws InterruptedException {
Thread t = new Thread(()->{throw new NullPointerException();},"threadHandler");
Thread.UncaughtExceptionHandler handler = (thread,e)->{
flag = true;
System.out.println("threadhandler:"+e);
};
t.setUncaughtExceptionHandler(handler);
t.start();
t.join();
if(flag){
System.out.println(true);
}else {
System.out.println(false);
}
System.out.println("===main===");
}
}
输出:
threadhandler:java.lang.NullPointerException
true
===main===
可以看到,子线程报NPE异常,flag变为true,在main线程中可以打印出来,则子线程异常通知到主线程
本文展示了一个Java程序示例,通过设置线程的未捕获异常处理器来捕获并处理子线程中的NullPointerException异常,确保主线程能够接收到子线程的异常通知。
845

被折叠的 条评论
为什么被折叠?



