java - Dónde capturar excepciones lanzadas desde Callable.call()
multithreading exception (1)
AFAIR java.util.concurrent.Future.get()
lanzará ExecutionException
si se proporcionó una excepción lanzada en el pasado (la excepción se almacena en el Future
).
Excepción lanzada cuando se intenta recuperar el resultado de una tarea que se canceló lanzando una excepción. Esta excepción se puede inspeccionar utilizando el método
Throwable.getCause()
.
Posible duplicado:
Manejo de excepciones de tareas de Java ExecutorService
Utilizo el ExecutorService
de Java para coordinar Threads. Para iniciar los hilos que utilizo.
pool = new ExecutorService(2);
callableResults = pool.invokeAll(threads);
Para recopilar el resultado, uso future.get()
para cada hilo. "hilos" es una Lista de objetos de una clase que implementa Callable
y anula call()
.
Ahora tengo el siguiente problema. El método call()
lanza varias excepciones específicas. invokeAll()
y future.get()
lanzan solo InterruptedException
.
¿Dónde puedo detectar mis excepciones específicas que lanzo en call()
? ¿O tengo que manejarlos allí? Si se lanza una de esas excepciones, ¿el resultado es una InterruptedException
?