gpt4 book ai didi

java - 子线程异常

转载 作者:行者123 更新时间:2023-12-02 01:06:55 25 4
gpt4 key购买 nike

我正在使用以下内容从主线程创建一个新线程:

public static void main(String[] args) {

try {
new TestThread().start();
} catch (Exception e) {
e.printStackTrace();
}

System.out.println("Inside main");

}

并抛出异常。我也可以在主线程中捕获它。但是根据 article

这不应该是这样吗?

编辑:

public class TestThread extends Thread {

@Override
public void run() {

throw new RuntimeException();
}

}

异常跟踪

Inside main
Exception in thread "Thread-0" java.lang.RuntimeException
at TestThread.run(TestThread.java:8)

最佳答案

线程的 run() 方法抛出的异常不会被主线程捕获,而是由 JVM 处理。
如果您想管理这种情况,您应该使用Thread.setUncaughtExceptionHandler方法。

类似这样的事情:

class MyHandler implements Thread.UncaughtExceptionHandler
{
@Override
public void uncaughtException(Thread t, Throwable e)
{
System.out.println("Caught exception " + e.getMessage());
e.printStackTrace();
}
}

class MyThread extends Thread
{
public MyThread()
{
setUncaughtExceptionHandler(new MyHandler());
}

@Override
public void run()
{
throw new RuntimeException("ciao");
}
}

关于java - 子线程异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59896473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com