我使用ExecutorService在系统上运行测试。当测试由于某种原因失败时会出现问题。这些原因可能很多,当然我也记录了这些错误。
但我想实时通知用户错误。因此,当发生错误时,它到达顶部的时间越长,它就会成为带有消息和原因的TestFailedException
。我想抓住这个例外并通知用户,但我似乎无法做到这一点。
这是一个实际启动运行测试的线程的方法示例:
public void asyncRunTestfixture(Concretetest concretetest) {
ExecutorService executor = Executors.newCachedThreadPool();
FutureTask<Boolean> futureTask_1 = new FutureTask<Boolean>(new Callable<Boolean>() {
@Override
public Boolean call() throws TestFailedException {
return RunTestInFixture(concretetest);
}
});
executor.execute(futureTask_1);
executor.shutdown();
}
但即使call会抛出异常,我也无法在其他地方捕获它,现在或者如果我说asyncRunTestfixture方法抛出异常。
我该如何解决这个问题?
答案 0 :(得分:2)
在完成的get()
上调用futureTask_1
会在任务抛出异常时抛出ExecutionException
,通常包裹cause
。