在Java中,可以使用Thread.UncaughtExceptionHandler来捕获子线程抛出的异常,并在主线程中进行处理。

首先,需要创建一个实现了Thread.UncaughtExceptionHandler接口的类,用于处理子线程抛出的异常:

class CustomUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
    @Override
    public void uncaughtException(Thread t, Throwable e) {
        System.out.println("子线程抛出异常:" + e.getMessage());
        // 终止主线程执行
        System.exit(1);
    }
}

然后,在主线程中设置子线程的UncaughtExceptionHandler为自定义的异常处理类:

public class MainThread {
    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
            // 子线程出现异常
            throw new RuntimeException("子线程异常");
        });

        thread.setUncaughtExceptionHandler(new CustomUncaughtExceptionHandler());
        thread.start();
    }
}

当子线程抛出异常时,CustomUncaughtExceptionHandler会被调用,主线程会获取到异常信息并终止程序执行

java子线程出现异常主线程获取异常并终止程序执行返回错误码

原文地址: https://www.cveoy.top/t/topic/ivWE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录