Где ловить исключения, выданные из Callable.call()

Возможный дубликат:
Обработка исключений из задач Java ExecutorService

Я использую ExecutorService из Java для координации потоков. Для запуска темы я использую

pool = new ExecutorService(2);
callableResults = pool.invokeAll(threads);

Для сбора результата я использую future.get() для каждой темы. "threads" - это список объектов из класса, который реализует Callable и переопределяет call(),

Теперь у меня есть следующая проблема. Метод call() бросает различные конкретные исключения. invokeAll() а также future.get() бросить только InterruptedException,

Где я могу поймать мои конкретные исключения, которые я добавляю call()? Или я должен справиться с ними там? Если выбрасывается одно из этих исключений, результат InterruptedException?

1 ответ

Решение

ЯРМАРКА java.util.concurrent.Future.get() будет бросать ExecutionException если предоставлено вызываемое исключение броска в прошлом (исключение сохраняется в Future).

Исключение выдается при попытке получить результат задачи, которая была прервана с помощью исключения. Это исключение можно проверить с помощью Throwable.getCause() метод.

Другие вопросы по тегам