PHP - Fehler- und Ausnahmebehandlung
Bei der Fehlerbehandlung werden von Ihrem Programm verursachte Fehler abgefangen und anschließend geeignete Maßnahmen ergriffen. Wenn Sie Fehler richtig behandeln, kann dies zu vielen unvorhergesehenen Konsequenzen führen.
In PHP ist es sehr einfach, Fehler zu behandeln.
Verwenden der Funktion die ()
Während Sie Ihr PHP-Programm schreiben, sollten Sie alle möglichen Fehlerzustände überprüfen, bevor Sie fortfahren, und bei Bedarf geeignete Maßnahmen ergreifen.
Versuchen Sie das folgende Beispiel ohne zu haben /tmp/test.xt Datei und mit dieser Datei.
<?php
if(!file_exists("/tmp/test.txt")) {
die("File not found");
}else {
$file = fopen("/tmp/test.txt","r");
print "Opend file sucessfully";
}
// Test of the code here.
?>
Auf diese Weise können Sie einen effizienten Code schreiben. Mit der oben genannten Technik können Sie Ihr Programm stoppen, wenn ein Fehler auftritt, und eine aussagekräftigere und benutzerfreundlichere Meldung anzeigen.
Definieren der benutzerdefinierten Fehlerbehandlungsfunktion
Sie können Ihre eigene Funktion schreiben, um Fehler zu behandeln. PHP bietet Ihnen ein Framework zum Definieren der Fehlerbehandlungsfunktion.
Diese Funktion muss mindestens zwei Parameter (Fehlerstufe und Fehlermeldung) verarbeiten können, kann jedoch bis zu fünf Parameter akzeptieren (optional: Datei, Zeilennummer und Fehlerkontext) -
Syntax
error_function(error_level,error_message, error_file,error_line,error_context);
Sr.Nr. | Parameter & Beschreibung |
---|---|
1 | error_level Erforderlich - Gibt die Fehlerberichtsebene für den benutzerdefinierten Fehler an. Muss eine Wertnummer sein. |
2 | error_message Erforderlich - Gibt die Fehlermeldung für den benutzerdefinierten Fehler an |
3 | error_file Optional - Gibt den Dateinamen an, in dem der Fehler aufgetreten ist |
4 | error_line Optional - Gibt die Zeilennummer an, in der der Fehler aufgetreten ist |
5 | error_context Optional - Gibt ein Array an, das jede Variable und ihre Werte enthält, die zum Zeitpunkt des Fehlers verwendet wurden |
Mögliche Fehlerstufen
Diese Fehlerberichtsebenen sind die verschiedenen Fehlertypen, für die der benutzerdefinierte Fehlerbehandler verwendet werden kann. Diese Werte können in Kombination mit verwendet werden| Operator
Sr.Nr. | Konstante & Beschreibung | Wert |
---|---|---|
1 | .E_ERROR Schwerwiegende Laufzeitfehler. Die Ausführung des Skripts wird angehalten |
1 |
2 | E_WARNING Nicht schwerwiegende Laufzeitfehler. Die Ausführung des Skripts wird nicht angehalten |
2 |
3 | E_PARSE Analysefehler beim Kompilieren. Analysefehler sollten nur vom Parser generiert werden. |
4 |
4 | E_NOTICE Laufzeithinweise. Das Skript hat einen Fehler gefunden, der jedoch auch beim normalen Ausführen eines Skripts auftreten kann |
8 |
5 | E_CORE_ERROR Schwerwiegende Fehler, die beim ersten Start von PHP auftreten. |
16 |
6 | E_CORE_WARNING Nicht schwerwiegende Laufzeitfehler. Dies geschieht beim ersten Start von PHP. |
32 |
7 | E_USER_ERROR Schwerwiegender benutzergenerierter Fehler. Dies ist wie ein E_ERROR, den der Programmierer mit der PHP-Funktion trigger_error () gesetzt hat. |
256 |
8 | E_USER_WARNING Nicht schwerwiegende benutzergenerierte Warnung. Dies ist wie ein E_WARNING, das vom Programmierer mit der PHP-Funktion trigger_error () festgelegt wurde. |
512 |
9 | E_USER_NOTICE Benutzergenerierte Benachrichtigung. Dies ist wie eine E_NOTICE, die vom Programmierer mit der PHP-Funktion trigger_error () festgelegt wurde. |
1024 |
10 | E_STRICT Laufzeithinweise. Aktivieren Sie diese Option, damit PHP Änderungen an Ihrem Code vorschlägt, die die beste Interoperabilität und Vorwärtskompatibilität Ihres Codes gewährleisten. |
2048 |
11 | E_RECOVERABLE_ERROR Fangender schwerwiegender Fehler. Dies ist wie ein E_ERROR, kann jedoch von einem benutzerdefinierten Handle abgefangen werden (siehe auch set_error_handler ()). |
4096 |
12 | E_ALL Alle Fehler und Warnungen mit Ausnahme der Stufe E_STRICT (E_STRICT wird ab PHP 6.0 Teil von E_ALL sein) |
8191 |
Alle oben genannten Fehlerstufen können mithilfe der folgenden in PHP integrierten Bibliotheksfunktion eingestellt werden, wobei die Stufe cab einer der in der obigen Tabelle definierten Werte sein kann.
int error_reporting ( [int $level] )
Im Folgenden erfahren Sie, wie Sie eine Fehlerbehandlungsfunktion erstellen können:
<?php
function handleError($errno, $errstr,$error_file,$error_line) {
echo "<b>Error:</b> [$errno] $errstr - $error_file:$error_line";
echo "<br />";
echo "Terminating PHP Script";
die();
}
?>
Sobald Sie Ihren benutzerdefinierten Fehlerbehandler definiert haben, müssen Sie ihn mithilfe der in PHP integrierten Bibliothek festlegen set_error_handlerFunktion. Lassen Sie uns nun unser Beispiel untersuchen, indem wir eine Funktion aufrufen, die nicht existiert.
<?php
error_reporting( E_ERROR );
function handleError($errno, $errstr,$error_file,$error_line) {
echo "<b>Error:</b> [$errno] $errstr - $error_file:$error_line";
echo "<br />";
echo "Terminating PHP Script";
die();
}
//set error handler
set_error_handler("handleError");
//trigger error
myFunction();
?>
Ausnahmebehandlung
PHP 5 hat ein Ausnahmemodell ähnlich dem anderer Programmiersprachen. Ausnahmen sind wichtig und bieten eine bessere Kontrolle über die Fehlerbehandlung.
Erläutern wir dort das neue Schlüsselwort für Ausnahmen.
Try- Eine Funktion, die eine Ausnahme verwendet, sollte sich in einem "try" -Block befinden. Wenn die Ausnahme nicht ausgelöst wird, wird der Code wie gewohnt fortgesetzt. Wenn die Ausnahme jedoch ausgelöst wird, wird eine Ausnahme "ausgelöst".
Throw- So lösen Sie eine Ausnahme aus. Jeder "Wurf" muss mindestens einen "Fang" haben.
Catch - Ein "catch" -Block ruft eine Ausnahme ab und erstellt ein Objekt mit den Ausnahmeinformationen.
Wenn eine Ausnahme ausgelöst wird, wird der auf die Anweisung folgende Code nicht ausgeführt, und PHP versucht, den ersten passenden catch-Block zu finden. Wenn eine Ausnahme nicht abgefangen wird, wird ein schwerwiegender PHP-Fehler mit der Meldung "Nicht erfasste Ausnahme ..." ausgegeben.
Eine Ausnahme kann in PHP ausgelöst und abgefangen ("abgefangen") werden. Code kann in einem Try-Block enthalten sein.
Jeder Versuch muss mindestens einen entsprechenden Fangblock haben. Mehrere Fangblöcke können verwendet werden, um verschiedene Klassen von Ausnahmen abzufangen.
Ausnahmen können innerhalb eines Catch-Blocks ausgelöst (oder erneut ausgelöst) werden.
Beispiel
Im Folgenden finden Sie den Code. Kopieren Sie diesen Code, fügen Sie ihn in eine Datei ein und überprüfen Sie das Ergebnis.
<?php
try {
$error = 'Always throw this error';
throw new Exception($error);
// Code following an exception is not executed.
echo 'Never executed';
}catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
// Continue execution
echo 'Hello World';
?>
Im obigen Beispiel wird die Funktion $ e-> getMessage verwendet, um eine Fehlermeldung abzurufen. Es gibt folgende Funktionen, die von verwendet werden könnenException Klasse.
getMessage() - Ausnahmemeldung
getCode() - Code der Ausnahme
getFile() - Quelldateiname
getLine() - Quellzeile
getTrace() - n Array der Rückverfolgung ()
getTraceAsString() - formatierte Trace-Zeichenfolge
Benutzerdefinierten Ausnahmebehandler erstellen
Sie können Ihren eigenen benutzerdefinierten Ausnahmebehandler definieren. Verwenden Sie die folgende Funktion, um eine benutzerdefinierte Ausnahmebehandlungsfunktion festzulegen.
string set_exception_handler ( callback $exception_handler )
Hier exception_handlerist der Name der Funktion, die aufgerufen werden soll, wenn eine nicht erfasste Ausnahme auftritt. Diese Funktion muss vor dem Aufruf von set_exception_handler () definiert werden.
Beispiel
<?php
function exception_handler($exception) {
echo "Uncaught exception: " , $exception->getMessage(), "\n";
}
set_exception_handler('exception_handler');
throw new Exception('Uncaught Exception');
echo "Not Executed\n";
?>
Überprüfen Sie den vollständigen Satz von Fehlerbehandlungsfunktionen unter PHP- Fehlerbehandlungsfunktionen