我对传递给线程池的可运行对象的处理错误感到非常困惑。

我正在做本书中的所有事情(从字面上讲,我坚持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而不是ThrowableErrorExceptionError更具体,而不是NoClassDefFoundError继承的内容,因此NoClassDefFoundError不会被catch表达式捕获。

关于java - 如何从Eclipse中的线程提取stacktrace?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24493811/

10-11 20:42