可能性のある複製:
Java ExecutorServiceタスク)からの例外の処理
JavaからのExecutorService
を使用してスレッドを調整します。スレッドを開始するために使用する
_pool = new ExecutorService(2);
callableResults = pool.invokeAll(threads);
_
結果を収集するには、スレッドごとにfuture.get()
を使用します。 「スレッド」は、Callable
を実装し、call()
をオーバーライドするクラスのオブジェクトのリストです。
今、私は次の問題を抱えています。メソッドcall()
は、さまざまな特定の例外をスローします。 invokeAll()
およびfuture.get()
は、InterruptedException
のみをスローします。
call()
でスローした特定の例外をどこでキャッチできますか?または、そこで処理する必要がありますか?これらの例外の1つがスローされた場合、結果はInterruptedException
ですか?
AFAIR Java.util.concurrent.Future.get()
がスローされる ExecutionException
指定された呼び出し可能オブジェクトが過去に例外をスローした場合(例外はFuture
に格納されます) )。
例外をスローすることによって中止されたタスクの結果を取得しようとしたときにスローされる例外。 この例外は、
Throwable.getCause()
メソッドを使用して検査できます。