我对传递给线程池的可运行对象的处理错误感到非常困惑。
我正在做本书中的所有事情(从字面上讲,我坚持Goetz的“实践中的并发性”),并且没有捕获Eclipse向我显示的任何错误,即使我的构建路径看起来不错,我也收到了奇怪的NoClassDefFoundErrors 。
我尝试杀死本地存储库并重新克隆它,以获得新的项目构建,但仍然出现错误。我的try-catches或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();
}
}
}
});
}
最佳答案
我不太确定您要完成什么,但是未在代码中捕获NoClassDefFoundError
的原因是您正在捕获Exception
而不是Throwable
或Error
。 Exception
比Error
更具体,而不是NoClassDefFoundError
继承的内容,因此NoClassDefFoundError
不会被catch
表达式捕获。
关于java - 如何从Eclipse中的线程提取stacktrace?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24493811/