Exception during Callable execution
-
29-10-2019 - |
Question
I have the following Callable:
public class Worker implements Callable<Boolean>{
@Override
public Boolean call(){
boolean success=true;
//do Something
return success;
}
}
Now I'm executing it:
Worker worker - new Worker();
Future<Boolean> submit = executor.submit(worker);
I'm storing the submit in kind of hashMap for some operation to be performed somewhere in code.
How can I know if any exception has occured in worker.call()
function?
Will submit.isCancelled()
return true if some sort of Exception occurred and false if everything works ok?
Solution
When you call Future.get()
it will throw your exception wrapped in a ExecutionException
.
OTHER TIPS
As stated in the documentation, Future<V>
will re-throw the exception that occurred during .call()
(though wrapped in an ExecutionException
), and isCancelled()
would still be false in this case.
In Guava Librairies, there is a FutureCallback
interface which has a onFailure(Throwable t)
method which should interest you
Adding Google Guava Librairies to a project is never a waste of space :-)
submit.get() will throw an ExecutionException