Start · Sprachen · PHP · Referenz · get_exception_handler

get_exception_handler

Funktion

Gibt den aktuell registrierten benutzerdefinierten Exception-Handler zurück, der mit <code>set_exception_handler()</code> gesetzt wurde.

seit PHP 8.4.0 Kategorie: error

Signatur

get_exception_handler(): ?callable

Beschreibung

get_exception_handler() liefert den Callable, der zuletzt über set_exception_handler() als globaler Exception-Handler registriert wurde. Wurde kein Handler gesetzt oder wurde er durch Aufruf von restore_exception_handler() vollständig entfernt, gibt die Funktion null zurück.

Die Funktion ist besonders nützlich, wenn man den aktuellen Handler vorübergehend sichern, temporär ersetzen und anschließend wiederherstellen möchte – etwa in Test-Frameworks, Middleware-Stacks oder Debugging-Werkzeugen, die einen eigenen Handler installieren und den vorherigen nicht verwerfen wollen.

Im Gegensatz zu set_exception_handler() verändert get_exception_handler() den internen Handler-Stack nicht; es handelt sich um eine reine Leseoperation. Sie greift ausschließlich auf den obersten (zuletzt registrierten) Handler zu.

Rückgabewert

Typ
callable|null
Beschreibung
Den aktuell registrierten Exception-Handler als callable, oder null, wenn kein benutzerdefinierter Handler gesetzt ist.

Beispiele

Aktuellen Handler auslesen und ausgeben

<?php
function myExceptionHandler(Throwable $e): void {
    echo 'Exception: ' . $e->getMessage();
}

set_exception_handler('myExceptionHandler');

$handler = get_exception_handler();

if ($handler !== null) {
    echo 'Aktueller Handler: ';
    var_dump($handler);
} else {
    echo 'Kein Handler gesetzt.';
}
Aktueller Handler: string(18) "myExceptionHandler"

Handler temporär ersetzen und anschließend wiederherstellen

<?php
function originalHandler(Throwable $e): void {
    echo '[Original] ' . $e->getMessage() . PHP_EOL;
}

function temporaryHandler(Throwable $e): void {
    echo '[Temporär] ' . $e->getMessage() . PHP_EOL;
}

set_exception_handler('originalHandler');

// Aktuellen Handler sichern
$previousHandler = get_exception_handler();

// Eigenen Handler temporär installieren
set_exception_handler('temporaryHandler');

// ... eigene Logik ...

// Vorherigen Handler wiederherstellen
if ($previousHandler !== null) {
    set_exception_handler($previousHandler);
} else {
    restore_exception_handler();
}

$current = get_exception_handler();
echo 'Wiederhergestellter Handler: ' . $current . PHP_EOL;
Wiederhergestellter Handler: originalHandler

// Wichtig · Fallstricke

Verfügbarkeit: get_exception_handler() wurde erst in PHP 8.4.0 eingeführt. In älteren PHP-Versionen steht die Funktion nicht zur Verfügung; dort muss der Handler manuell in einer eigenen Variable gesichert werden.

Beachte, dass restore_exception_handler() einen internen Stack nutzt und den zuletzt über set_exception_handler() gesetzten Handler entfernt. get_exception_handler() zeigt stets den Handler ganz oben auf diesem Stack – nicht zwingend den ursprünglichen PHP-Standard-Handler.