Sollten Funktionen, die Future [A] zurückgeben, Ausnahmen auslösen?

8

Ich bin auf Funktionen gestoßen, die Future zurückgeben, aber auch Ausnahmen sofort auslösen. Zum Beispiel so:

%Vor%

Dieses Verhalten scheint für den Aufrufer lästig zu sein, weil Sie so etwas machen müssen, um beide Fehler zu erfassen:

%Vor%

Ich habe bemerkt, dass das WSClient im play-Framework dies tut (beide werfen Ausnahmen, wenn die URL fehlerhaft ist, und gibt Future zurück, was fehlschlägt, wenn die HTTP-Anfrage fehlschlägt).

Ist das eine gute Praxis? Gibt es eine bessere Möglichkeit, Fehler von Funktionen zu behandeln, die sich so verhalten?

    
Tom Haigh 19.11.2015, 11:36
quelle

1 Antwort

4

Future wird verwendet, um irgendwann etwas zurückzugeben, aber es ist nicht klar, wann dies tatsächlich passiert.

Aus einer .NET-Perspektive kommend (wir haben Task ): Eine Ausnahme sollte ausgelöst werden, wenn die Anfrage eindeutig ungültig ist (z. B. eine ungültige URL). Sie kennen das bereits, bevor Sie die Webanfrage stellen. Es besteht keine Notwendigkeit, die Ausnahmen zu verzögern.

Andererseits, wenn der Server ausgefallen ist (Timeout?) oder der Server etwas zurückgibt, was Ihr Client nicht versteht: Dies kann und muss zu einem späteren Zeitpunkt gehandhabt werden, da die Antwort nicht direkt zur Verfügung steht Anruf. Wir wären in der Lage zu blockieren, bis die Antwort verfügbar ist, aber das Future nutzlos machen würde.

Ich denke, das ist am besten mit dem Programm "Exit Early" zu vergleichen.

    
Caramiriel 19.11.2015 11:43
quelle

Tags und Links