Signatur
Beschreibung
error_clear_last() setzt den internen PHP-Fehlerpuffer zurück, der normalerweise über error_get_last() ausgelesen wird. Nach dem Aufruf gibt error_get_last() null zurück, bis ein neuer Fehler auftritt.
Diese Funktion ist besonders nützlich, wenn man gezielt prüfen möchte, ob ein bestimmter Codeabschnitt einen neuen Fehler erzeugt hat – ohne dass ältere, bereits vorhandene Fehler das Ergebnis verfälschen. Typische Anwendungsfälle sind benutzerdefinierte Fehlerbehandlungsroutinen sowie Unit-Tests, die Fehlerzustände isoliert überprüfen.
Da error_get_last() stets nur den letzten Fehler speichert, kann es ohne vorheriges Löschen unklar sein, ob ein Fehler vor oder nach einer bestimmten Operation aufgetreten ist. error_clear_last() schafft einen definierten Ausgangszustand und ermöglicht so präzises Fehler-Tracking.
Rückgabewert
Beispiele
Fehlerzustand vor einer Operation bereinigen
<?php
// Simuliere einen früheren Fehler
trigger_error('Alter Fehler', E_USER_NOTICE);
// Fehlerpuffer bereinigen
error_clear_last();
// Prüfen ob error_get_last() nun null liefert
$fehler = error_get_last();
var_dump($fehler);
Gezieltes Prüfen ob eine Operation einen Fehler erzeugt
<?php
// Fehlerpuffer vor dem kritischen Abschnitt leeren
error_clear_last();
// Operation, die möglicherweise einen Fehler erzeugt
$result = @file_get_contents('/nicht/existierende/datei.txt');
$fehler = error_get_last();
if ($fehler !== null) {
echo 'Fehler aufgetreten: ' . $fehler['message'] . PHP_EOL;
echo 'Typ: ' . $fehler['type'] . PHP_EOL;
} else {
echo 'Kein Fehler aufgetreten.' . PHP_EOL;
}
// Wichtig · Fallstricke
PHP-Version: Die Funktion ist erst ab PHP 7.0.0 verfügbar. In älteren PHP-Versionen kann der Fehlerpuffer nur indirekt durch einen absichtlich ausgelösten harmlosen Fehler (z. B. trigger_error) überschrieben werden.
Kein Einfluss auf Fehlerprotokoll: error_clear_last() löscht ausschließlich den internen PHP-Fehlerpuffer. Bereits ins PHP-Fehlerlog geschriebene Einträge werden dadurch nicht entfernt.
Zusammenspiel mit @-Operator: Wenn Fehler mit dem Fehlerunterdrückungsoperator @ unterdrückt werden, kann error_get_last() dennoch einen Eintrag enthalten. error_clear_last() stellt sicher, dass dieser geleert wird, bevor ein neuer Abschnitt geprüft wird.