Ja, es gibt eine Ausnahme, egal, was die Zukunft ausmacht.
Das Auslösen der Ausnahme könnte als eine Nachricht für den Thread dienen, für den die Ausnahme ausgelöst wird. Im Allgemeinen
,
andthen einige Neben zur Ausführung Bewirkung Code verwendet wird, nachdem die gegebene zukünftige abgeschlossen ist und der Ergebnistyp der Operation nach andthen wird das gleiche Ergebnis ursprünglichen Zukunft. Sie können also ein Muster erstellen und dasselbe Ergebnis wie in der ursprünglichen Zukunft erwarten.
In Ihrem Fall Seite bewirkt Betrieb eine Ausnahme wirft, aber es kann auch jeder anderer nützlicher Nebenbetrieb zu bewirken sein wie die Ressourcen zu schließen usw.
Hier Datei zu schreiben ist die Implementierung von andThen
von Standardbibliothek Scala.
andThen
wird verwendet, um einige Nebenwirkungsoperation auszuführen, sobald die Zukunft, auf der sie aufgerufen wird, abgeschlossen ist, aber die zu beachtende Sache ist der Ergebnistyp der gesamten Operation wird die Zukunft mit ursprünglichem zukünftigem Ergebnis sein.
def andThen[U](pf: PartialFunction[Try[T], U])(implicit executor: ExecutionContext): Future[T] = {
val p = Promise[T]()
onComplete {
case r => try pf.applyOrElse[Try[T], Any](r, Predef.conforms[Try[T]]) finally p complete r
}
p.future
}
Hinweis nach der andThen
Betrieb Zukunft mit dem Ergebnis der ursprünglichen Zukunft zurückgegeben.
Wie von @ Yuval Itzchakov gesagt, könnten Sie es verwenden, um die Ausnahmen auf den Hauptthread zu werfen. Aber im Allgemeinen wird es für die Nebenwirkung nach dem Abschluss einer Zukunft verwendet.