Где ловить исключения, выданные из 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()
метод.