Ausnahme während der Ausführung Aufrufbar
Habe ich Folgendes Aufrufbar:
public class Worker implements Callable<Boolean>{
@Override
public Boolean call(){
boolean success=true;
//do Something
return success;
}
}
Nun bin ich es, der Sie ausführt:
Worker worker - new Worker();
Future<Boolean> submit = executor.submit(worker);
Ich bin die Speicherung der reichen in Art hashMap für die eine operation ausgeführt werden irgendwo im code.
Wie kann ich wissen, ob eine Ausnahme aufgetreten ist, in worker.call()
Funktion?
Wird submit.isCancelled()
gibt true zurück, wenn irgendeine Art von Ausnahme aufgetreten ist, und false, wenn alles funktioniert, ok?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim Aufruf
Zukunft.get()
es wird eine exception auslösen, eingewickelt in einExecutionException
.throw
die Ausnahme.V call() throws Exception
ist die original-Erklärung Kündbar.Wie gesagt in der Dokumentation,
Future<V>
wieder werfen die Ausnahme, die aufgetreten sind, während.call()
(obwohl eingewickelt in einExecutionException
), undisCancelled()
wäre immer noch falsch in diesem Fall.In Guava Bibliotheken, es ist ein
FutureCallback
- Schnittstelle, die eineonFailure(Throwable t)
Methode, die sollten Sie InteresseHinzufügen von Google Guava Bibliotheken zu einem Projekt ist nie eine Verschwendung von Speicherplatz 🙂
Einreichen.get() wirft einen ExecutionException