我对处理传递给线程池的runnables上的错误非常困惑。
我正在按照这本书做的一切(字面意思是,我坚持Goetz的“实践中的并发”)并且我没有捕捉到Eclipse向我展示的任何错误,而且即使我得到了奇怪的NoClassDefFoundErrors buildpath看起来很好。
我试图杀死我的本地仓库并重新克隆它以获得新的项目构建,但仍然得到错误。我的尝试捕获或System.out.println都没有工作。有没有什么方法Eclipse可以让我更好地查看错误?或者实际上让错误处理程序工作的方法?
//ThreadPool and runnable that is failing, even with error captures
MyPriorityThreadPool.execute(new RunWithPriority(priority) {
Throwable thrown = null;
@Override
public void run() {
try {
batch.buildData();
} catch (Exception e) {
thrown = e;
}
finally {
if (thrown != null) {
thrown.printStackTrace();
}
}
}
});
}
答案 0 :(得分:2)
我不太确定您要完成的工作,但您在代码中没有抓住NoClassDefFoundError
的原因是您正在抓住{{ 1}}而不是Exception
或Throwable
。 Error
比Exception
更具体,不 Error
继承的内容,因此NoClassDefFoundError
未被NoClassDefFoundError
抓住表达。