从Callable.call()抛出异常的位置

nan*_*no7 20 java multithreading exception callable executorservice

可能重复:
处理Java ExecutorService任务中的异常

我使用ExecutorServicefrom Java来协调Threads.用于启动我使用的线程

pool = new ExecutorService(2);
callableResults = pool.invokeAll(threads);
Run Code Online (Sandbox Code Playgroud)

为了收集结果,我使用future.get()每个线程."threads"是实现Callable和覆盖的类中的对象列表call().

现在我遇到了以下问题.该方法call()确实抛出了各种特定的异常.invokeAll()并且future.get()只投掷InterruptedException.

我在哪里可以捕获我投入的具体例外情况call()?或者我必须在那里处理它们?如果抛出其中一个异常,那么结果是InterruptedException

Tom*_*icz 32

如果过去提供了可调用的抛出异常,java.util.concurrent.Future.get()则抛出AFAIR ExecutionException(异常存储在该异常中Future).

尝试检索通过抛出异常而中止的任务的结果时抛出异常.可以使用该Throwable.getCause()方法检查此异常.