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?

Was it helpful?

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top