我对处理传递给线程池的可运行对象的错误感到非常困惑。
我正在按照书本做所有事情(从字面上看,我遵循 Goetz 的“实践中的并发”),并且我没有捕获 Eclipse 向我显示的任何错误,并且我得到了奇怪的 NoClassDefFoundErrors,即使我的构建路径看起来不错。
我尝试杀死我的本地存储库并重新克隆它以获取新的项目构建,但仍然收到错误。我的 try-catch 或 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 中的线程中提取堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24493811/