为什么当从与主线程不同的线程抛出未经检查的异常时,我无法在 Eclipse 的控制台中看到堆栈跟踪?
例如:
ScheduledThreadPoolExecutor scheduledExecutor;
scheduledExecutor.scheduleAtFixedRate(new Log(), 0, LOGGING_FREQUENCY_MS, TimeUnit.MILLISECONDS);
public class Log implements Runnable {
public void run() {
//NullPointerException is thrown
}
}
我没有输出。但如果我这样做:
ScheduledThreadPoolExecutor scheduledExecutor;
scheduledExecutor.scheduleAtFixedRate(new Log(), 0, LOGGING_FREQUENCY_MS, TimeUnit.MILLISECONDS);
public class Log implements Runnable {
public void run() {
try {
//NullPointerException is thrown
}catch(Exception e){
e.printStackTrace();
}
}
}
我可以看到堆栈跟踪。
为什么?
编辑:后续问题:打印线程池线程抛出的异常的最简单方法是什么?将 try-catch 添加到每个 Runnable 中当然非常难看。