Future::failed
(PHP 8.6+, True Async 1.0)
php
public static function failed(\Throwable $throwable): FutureErstellt ein Future, das sofort mit dem angegebenen Fehler abgeschlossen ist. Der Aufruf von await() auf einem solchen Future löst die bereitgestellte Ausnahme aus.
Parameter
throwable — die Ausnahme, mit der das Future abgeschlossen wird.
Rückgabewert
Future — ein mit einem Fehler abgeschlossenes Future.
Beispiele
Beispiel #1 Ein Future mit einem Fehler erstellen
php
<?php
use Async\Future;
use Async\FutureState;
$future = Future::failed(new \RuntimeException("Ladefehler"));
var_dump($future->isCompleted()); // bool(true)
try {
$future->await();
} catch (\RuntimeException $e) {
echo "Abgefangen: " . $e->getMessage() . "\n";
// Abgefangen: Ladefehler
}Beispiel #2 Verwendung für vorzeitige Fehlerrückgabe
php
<?php
use Async\Future;
use Async\FutureState;
function connectToService(string $host): Future {
if (empty($host)) {
return Future::failed(
new \InvalidArgumentException("Host darf nicht leer sein")
);
}
$state = new FutureState();
\Async\spawn(function() use ($state, $host) {
try {
$state->complete(performConnection($host));
} catch (\Throwable $e) {
$state->error($e);
}
});
return new Future($state);
}
$future = connectToService('');
$future
->catch(function(\Throwable $e) {
echo "Fehler: " . $e->getMessage() . "\n";
})
->ignore();Siehe auch
- Future::completed — Ein Future mit einem Ergebnis erstellen
- Future::catch — Einen Future-Fehler behandeln
- Future::await — Das Ergebnis abwarten