Future::failed
(PHP 8.6+, True Async 1.0)
php
public static function failed(\Throwable $throwable): FutureСоздаёт Future, который немедленно завершён с указанной ошибкой. При вызове await() на таком Future будет выброшено переданное исключение.
Параметры
throwable — исключение, с которым Future будет завершён.
Возвращаемое значение
Future — завершённый Future с ошибкой.
Примеры
Пример #1 Создание Future с ошибкой
php
<?php
use Async\Future;
use Async\FutureState;
$future = Future::failed(new \RuntimeException("Ошибка загрузки"));
var_dump($future->isCompleted()); // bool(true)
try {
$future->await();
} catch (\RuntimeException $e) {
echo "Перехвачено: " . $e->getMessage() . "\n";
// Перехвачено: Ошибка загрузки
}Пример #2 Использование для раннего возврата ошибки
php
<?php
use Async\Future;
use Async\FutureState;
function connectToService(string $host): Future {
if (empty($host)) {
return Future::failed(
new \InvalidArgumentException("Хост не может быть пустым")
);
}
$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 "Ошибка: " . $e->getMessage() . "\n";
})
->ignore();См. также
- Future::completed — Создать Future с результатом
- Future::catch — Обработка ошибки Future
- Future::await — Ожидание результата