PHP: Eigene Fehlermeldungen erzeugen

Damit kein Fehler unbemerkt bleibt, bringt PHP einige Verfahren mit, um Error-Meldungen zu erzeugen. Je nach PHP-Version kommen unterschiedliche Verfahren zum Einsatz, um Fehlermeldungen zu erzeugen. In PHP 4 gibt es nur trigger_error() oder – gleichwertig – user_error(). Mit PHP 5 kommen zusätzlich die aus Java und C# bekannten try…catch-Konstruktionen zum Einsatz – trigger_error() gibt es natürlich auch weiterhin.

In diesem Beitrag lernen Sie zunächst die PHP4-Version kennen. Los geht es

mit folgendem Beispiel:

<?php

function division($intWert1, $intWert2)

{

if (!is_numeric($intWert1))

trigger_error(‘$intWert1 ist keine Zahl’);

if (!is_numeric($intWert2))

trigger_error(‘$intWert2 ist keine Zahl’);

return $intWert1/$intWert2;

}

echo division(1, “drei”);

?>

Beim Aufruf überprüft die Funktion division die ihr übergebenen Argumente. Mit is_numeric() stellt sie fest, ob es sich um Zahlen handelt. Falls nicht, erscheint eine entsprechende Fehlermeldung. Allerdings ist dieses Verfahren noch nicht perfekt. Denn per Default gibt es nur eine Notice, also eine Anmerkung, dass etwas nicht stimmen könnte – die Funktion arbeitet trotzdem weiter und erzeugt einen handfesten “Division by Zero”-Error. Um das zu verhindern, verwandeln Sie die “Notice” in einen “Error”. Dazu hängen Sie die Konstante E_USER_ERROR an. Der Error führt zum Abbruch des Programms.

if (!is_numeric($intWert1))

user_error(‘$intWert1 ist keine Zahl’, E_USER_ERROR);

Insgesamt stehen drei Konstanten zur Verfügung:

+ E_USER_NOTICE – erzeugt eine Anmerkung. Das ist sinnvoll, wenn ein Problem auftritt, das möglicherweise zu einem Fehler im späteren Ablauf führen könnte. Das ist auch die Voreinstellung.

+ E_USER_WARNING – erzeugt eine Warnung. Das Skript wird nicht abgebrochen. Sinnvoll bei nicht fatalen Fehlern

+ E_USER_ERROR – erzeugt einen Fehler und Programmabbruch. Sinnvoll bei allen Fehlern, die sich nicht mehr beheben oder korrigieren lassen. Zu jedem Fehler erhalten Sie den Pfad zur fehlerhaften Datei und die Zeilennumer.

Damit Sie auch erfahren, in welcher Funktion das Problem aufgetreten ist, nutzen Sie die Konstante __FUNCTION__. Ein Beispiel:

<?php

user_error(‘$intWert2 ist keine Zahl in Funktion: <b>

‘.__FUNCTION__.'</b>’ , E_USER_ERROR);

?>

In einer Klasse setzen Sie statt __FUNCTION__ die Konstante __CLASS__ ein. Für Methoden gibt es __METHOD__. Probieren Sie es mit den selbst gemachten Fehlermeldungen aus. Sie werden sehen, dass Sie bald robusteren und besseren Code schreiben.

Eigenen Errorhandler definieren

Mit der Funktion set_error_handler() definieren Sie einen eigenen Handler für Fehlermeldungen. Als Parameter übergeben Sie den Namen einer weiteren Funktion, die sich um die Abarbeitung des Problems kümmert. Auf diese Weise können Sie zum Beispiel veranlassen, dass Sie bei bestimmten Fehlermeldungen automatisch eine Mail erhalten oder dass bei kritischen Fehlern automatisch temporäre Daten gelöscht werden.

Ins Error-Log schreiben

Sie möchten eine Meldung in das Error-Log Ihres Webservers schreiben oder eine Fehlermeldung per Mail senden? Dann nutzen Sie die Funktion error_log().

Als ersten Parameter schreiben Sie dort die Fehlermeldung hinein. An zweiter Stelle steht ein Wert zwischen 0 und 3, der die Art der Weiterverarbeitung angibt. Mit 0 geht die Meldung in das vordefinierte Error-Logfile, mit 1 an die als dritten Parameter festgelegte MailAdresse.

Mehr Informationen zur Funktion gibt es im Internet unter http://de.php.net/error_log

Ähnliche Beiträge