有人可以解释其背后的原因吗?
是的,因为您抛出的任何异常
run都会被JVM仔细忽略。因此,将其抛出可能是一个错误(除非您对该线程具有特定的异常处理程序,请参阅有关该文档的文档)。没有理由煽动潜在的错误行为。
或者举个例子。
class MyThread extends Thread { public void run() { throw new RuntimeException(); } }...new MyThread().start();// here thread dies silently with no visible effects at all
编辑
为什么父线程不能从生成的“子”线程“捕获”异常?
@ chaotic3quilibrium 已经在他的评论中指出了为什么不这样做:因为父线程可能已经继续运行。
new MyThread().start(); // launch thread and forget// 1000 lines of pre further...i = i + 1; // would you like exception from child thread to be propagated here?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)