Start · Sprachen · PHP · Referenz · error_clear_last

error_clear_last

Funktion

Löscht den zuletzt aufgetretenen Fehler, sodass <code>error_get_last()</code> anschließend <code>null</code> zurückgibt.

seit PHP 7.0.0 Kategorie: error

Signatur

error_clear_last(): void

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

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück.

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);
NULL

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;
}
Fehler aufgetreten: file_get_contents(/nicht/existierende/datei.txt): Failed to open stream: No such file or directory Typ: 2

// 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.