Scope::setExceptionHandler
(PHP 8.6+, True Async 1.0)
public function setExceptionHandler(callable $exceptionHandler): void
Définit un gestionnaire d’exceptions pour les exceptions levées dans les coroutines enfants du scope. Lorsqu’une coroutine se termine avec une exception non gérée, au lieu que l’erreur se propage vers le haut, le gestionnaire spécifié est appelé.
Paramètres
exceptionHandler — la fonction de gestion des exceptions. Accepte un \Throwable en argument.
Valeur de retour
Aucune valeur n’est retournée.
Exemples
Exemple #1 Gestion des erreurs de coroutines
<?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();
// Le journal contiendra : "Coroutine error: Something went wrong"
Exemple #2 Journalisation centralisée des erreurs
<?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
Voir aussi
- Scope::setChildScopeExceptionHandler — Gestionnaire d’exceptions pour les scopes enfants
- Scope::finally — Callback à la fin du scope