Coroutine::getException

(PHP 8.6+, True Async 1.0)

public Coroutine::getException(): mixed

Returns the exception that occurred in the coroutine. If the coroutine completed successfully or has not yet completed, returns null. If the coroutine was cancelled, returns an AsyncCancellation object.

Return Value

mixed – the exception or null.

Errors

Throws RuntimeException if the coroutine is currently running.

Examples

Example #1 Successful completion

<?php

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

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

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

Example #2 Completion with error

<?php

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

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

try {
    await($coroutine);
} catch (RuntimeException $e) {
    // Caught during await
}

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

Example #3 Cancelled 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)

See Also