Coroutine::getException

(PHP 8.6+, True Async 1.0)

public Coroutine::getException(): mixed

Gibt die in der Coroutine aufgetretene Ausnahme zurueck. Wenn die Coroutine erfolgreich abgeschlossen wurde oder noch nicht abgeschlossen ist, wird null zurueckgegeben. Wenn die Coroutine abgebrochen wurde, wird ein AsyncCancellation-Objekt zurueckgegeben.

Rueckgabewert

mixed – die Ausnahme oder null.

Fehler

Wirft RuntimeException, wenn die Coroutine gerade ausgefuehrt wird.

Beispiele

Beispiel #1 Erfolgreicher Abschluss

<?php

use function Async\spawn;
use function Async\await;

$coroutine = spawn(function() {
    return "success";
});

await($coroutine);
var_dump($coroutine->getException()); // NULL

Beispiel #2 Abschluss mit Fehler

<?php

use function Async\spawn;
use function Async\await;

$coroutine = spawn(function() {
    throw new RuntimeException("Testfehler");
});

try {
    await($coroutine);
} catch (RuntimeException $e) {
    // Waehrend await abgefangen
}

$exception = $coroutine->getException();
var_dump($exception instanceof RuntimeException); // bool(true)
var_dump($exception->getMessage());                // string(10) "Testfehler"

Beispiel #3 Abgebrochene Coroutine

<?php

use function Async\spawn;
use function Async\suspend;

$coroutine = spawn(function() {
    Async\delay(10000);
});

suspend();
$coroutine->cancel();
suspend();

$exception = $coroutine->getException();
var_dump($exception instanceof \Async\AsyncCancellation); // bool(true)

Siehe auch