我有Java主类,在该类中,我启动了一个新线程,在主类中,它等待线程死亡。在某个时刻,我从线程中抛出了运行时异常,但是我无法在主类中捕获从线程中抛出的异常。
这是代码:
public class Test extends Thread
{
public static void main(String[] args) throws InterruptedException
{
Test t = new Test();
try
{
t.start();
t.join();
}
catch(RuntimeException e)
{
System.out.println("** RuntimeException from main");
}
System.out.println("Main stoped");
}
@Override
public void run()
{
try
{
while(true)
{
System.out.println("** Started");
sleep(2000);
throw new RuntimeException("exception from thread");
}
}
catch (RuntimeException e)
{
System.out.println("** RuntimeException from thread");
throw e;
}
catch (InterruptedException e)
{
}
}
}
有人知道为什么吗?
博客探讨了在Java程序中,主线程如何捕获从子线程中抛出的运行时异常。代码示例显示,尽管子线程中抛出了`RuntimeException`,但主线程无法直接捕获这个异常。问题在于子线程中异常被重新抛出,而不是被捕获并处理。
1351

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



