Scope::setExceptionHandler
(PHP 8.6+, True Async 1.0)
public function setExceptionHandler(callable $exceptionHandler): void
Встановлює обробник винятків для винятків, що виникають у дочірніх корутинах області видимості. Коли корутина завершується з необробленим винятком, замість поширення помилки вгору викликається зазначений обробник.
Параметри
exceptionHandler — функція обробки винятків. Приймає \Throwable як аргумент.
Значення, що повертається
Значення не повертається.
Приклади
Приклад #1 Обробка помилок корутин
<?php
use Async\Scope;
$scope = new Scope();
$scope->setExceptionHandler(function(\Throwable $e) {
error_log("Coroutine error: " . $e->getMessage());
});
$scope->spawn(function() {
throw new \RuntimeException("Something went wrong");
});
$scope->awaitCompletion();
// Log will contain: "Coroutine error: Something went wrong"
Приклад #2 Централізоване логування помилок
<?php
use Async\Scope;
$scope = new Scope();
$errors = [];
$scope->setExceptionHandler(function(\Throwable $e) use (&$errors) {
$errors[] = $e;
});
$scope->spawn(function() {
throw new \RuntimeException("Error 1");
});
$scope->spawn(function() {
throw new \LogicException("Error 2");
});
$scope->awaitCompletion();
echo "Total errors: " . count($errors) . "\n"; // Total errors: 2
Дивіться також
- Scope::setChildScopeExceptionHandler — Обробник винятків для дочірніх областей видимості
- Scope::finally — Зворотний виклик при завершенні області видимості