PHP Try Catch Beispiel: Ausnahme & Tutorial zur Fehlerbehandlung

Inhaltsverzeichnis:

Anonim

Was ist eine Ausnahme?

Ein Fehler ist ein unerwartetes Programmergebnis, das vom Programm selbst nicht verarbeitet werden kann.

Fehler werden durch Beheben des Programms behoben. Ein Beispiel für einen Fehler wäre eine Endlosschleife, deren Ausführung niemals aufhört.

Eine Ausnahme ist ein unerwartetes Programmergebnis, das vom Programm selbst verarbeitet werden kann.

Beispiele für Ausnahmen sind der Versuch, eine nicht vorhandene Datei zu öffnen.

Diese Ausnahme kann behoben werden, indem entweder die Datei erstellt wird oder dem Benutzer die Option zur Suche nach der Datei angeboten wird.

In diesem Tutorial lernen Sie:

  • Warum Ausnahmen behandeln?
  • PHP Fehlerbehandlung
  • Beispiele für Fehlerbehandlungen
  • Unterschied zwischen Fehlern und Ausnahmen
  • Mehrere Ausnahmen
  • Code testen

Warum Ausnahmen behandeln?

  • Vermeiden Sie unerwartete Ergebnisse auf unseren Seiten, die für unsere Endbenutzer sehr ärgerlich oder irritierend sein können
  • Verbessern Sie die Sicherheit unserer Anwendungen, indem Sie keine Informationen preisgeben, mit denen böswillige Benutzer unsere Anwendungen angreifen können
  • PHP-Ausnahmen werden verwendet, um den normalen Ablauf eines Programms zu ändern, wenn ein vorhersehbarer Fehler auftritt.

PHP Fehlerbehandlung

Wenn ein Fehler auftritt, zeigt PHP abhängig von Ihren Konfigurationseinstellungen die Fehlermeldung im Webbrowser mit Informationen zu dem aufgetretenen Fehler an.

PHP bietet eine Reihe von Möglichkeiten, um mit Fehlern umzugehen.

Wir werden drei (3) häufig verwendete Methoden betrachten;

  1. Die-Anweisungen - Die Die-Funktion kombiniert die Echo-Funktion und die Exit-Funktion in einem. Dies ist sehr nützlich, wenn Sie eine Nachricht ausgeben und die Skriptausführung stoppen möchten, wenn ein Fehler auftritt.
  2. Benutzerdefinierte Fehlerbehandlungsroutinen - Dies sind benutzerdefinierte Funktionen, die aufgerufen werden, wenn ein Fehler auftritt.
  3. PHP-Fehlerberichterstattung - Die Fehlermeldung hängt von Ihren Einstellungen für die PHP-Fehlerberichterstattung ab. Diese Methode ist in Entwicklungsumgebungen sehr nützlich, wenn Sie keine Ahnung haben, was den Fehler verursacht hat. Die angezeigten Informationen können Ihnen beim Debuggen Ihrer Anwendung helfen.

Beispiele für Fehlerbehandlungen

Schauen wir uns nun einige einfache Beispiele mit Fehlerbehandlungsroutinen an.

Nehmen wir an, wir haben eine Anwendung entwickelt, die Textdateien zum Speichern von Daten verwendet. Möglicherweise möchten wir die Existenz der Datei überprüfen, bevor wir versuchen, Daten daraus zu lesen.

Der folgende Code implementiert das obige Beispiel.

Angenommen, Sie haben die Datei simple_error.php im Ordner phptuts gespeichert, öffnen Sie die URL http: //localhost/phptuts/simple_error.php

Sie erhalten die folgenden Ergebnisse

Wie Sie den obigen Ergebnissen entnehmen können, sieht unsere Anwendung unprofessionell aus und kann für den Benutzer ärgerlich sein.

Wir werden den obigen Code ändern und einen Fehlerhandler für die Anwendung schreiben

Angenommen, Sie haben den obigen Code als error_handling.php gespeichert, öffnen Sie die URL http: //localhost/phptuts/error_handling.php

Hinweis: Es ist eine gute Sicherheitspraxis, eine Nachricht wie oben gezeigt anzuzeigen, anstatt die Nachricht wie "Datei nicht gefunden" anzuzeigen.

Schauen wir uns ein anderes Beispiel an, das einen benutzerdefinierten Fehlerhandler verwendet.

Der benutzerdefinierte Fehlerbehandler wird als Standardfunktion für die PHP-Fehlerbehandlung festgelegt und zeigt im Wesentlichen eine Fehlernummer und eine Meldung an.

Der folgende Code veranschaulicht die Implementierung des obigen Beispiels

Öffnen Sie die URL http: //localhost/phptuts/custom_error_handler.php. Sie erhalten die folgenden Ergebnisse

.

Wie Sie dem obigen Beispiel entnehmen können, sind benutzerdefinierte Fehlerbehandlungsroutinen in dem Sinne leistungsfähig, dass

  • Sie ermöglichen es uns, die Fehlermeldungen anzupassen.
  • Der benutzerdefinierte Fehlerbehandler kann auch die Fehlerprotokollierung in einer Datei / Datenbank, das Versenden einer E-Mail an den Entwickler usw. umfassen.

Schauen wir uns nun die dritte Art der Fehlerbehandlung an. Wir werden die in PHP integrierte Funktion error_reporting verwenden. Es hat die folgende grundlegende Syntax

HIER,

  • "Error_reporting" ist die PHP-Fehlerberichterstattungsfunktion
  • "$ Reporting_level" ist optional und kann zum Festlegen der Berichtsebene verwendet werden. Wenn keine Berichtsebene angegeben wurde, verwendet PHP die in der Datei php.ini angegebene Standard-Fehlerberichtsebene.
Berichtsebene Beschreibung Beispiel
E_WARNING Zeigt nur Warnmeldungen an. Stoppt die Ausführung des Skripts nicht error_reporting (E_WARNING);
E_HINWEIS Zeigt Hinweise an, die während der normalen Ausführung eines Programms auftreten können oder ein Fehler sein können. error_reporting (E_ NOTICE);
E_USER_ERROR Zeigt vom Benutzer generierte Fehler an, dh benutzerdefinierte Fehlerbehandlungsroutine error_reporting (E_ USER_ERROR);
E_USER_WARNING Zeigt vom Benutzer generierte Warnmeldungen an error_reporting (E_USER_WARNING);
E_USER_NOTICE Zeigt vom Benutzer generierte Benachrichtigungen an error_reporting (E_USER_NOTICE);
E_RECOVERABLE_ERROR Zeigt Fehler an, die nicht schwerwiegend sind und mit benutzerdefinierten Fehlerbehandlungsroutinen behandelt werden können error_reporting (E_RECOVERABLE_ERROR);
E_ALL Zeigt alle Fehler und Warnungen an error_reporting (E_ ALL);

Unterschied zwischen Fehlern und Ausnahmen

  • Ausnahmen werden ausgelöst und sollen abgefangen werden, während Fehler im Allgemeinen nicht behoben werden können.
  • Ausnahmen werden objektorientiert behandelt.

    Dies bedeutet, wenn eine Ausnahme ausgelöst wird. Es wird ein Ausnahmeobjekt erstellt, das die Ausnahmedetails enthält.

Die folgende Tabelle zeigt die Ausnahmeobjektmethoden

Methode Beschreibung Beispiel
getMessage () Zeigt die Nachricht der Ausnahme an
getMessage();?>
getCode () Zeigt den numerischen Code an, der die Ausnahme darstellt
getCode();?>
eine Datei bekommen() Zeigt den Dateinamen und den Pfad an, in dem die Ausnahme aufgetreten ist
getFile();?>
getLine () Zeigt die Zeilennummer an, in der die Ausnahme aufgetreten ist
getLine();?>
getTrace () Zeigt ein Array der Rückverfolgung vor der Ausnahme an
getTrace());?>
getPrevious () Zeigt die vorherige Ausnahme vor der aktuellen an
getPrevious();?>
getTraceAsString () Zeigt die Rückverfolgung der Ausnahme als Zeichenfolge anstelle eines Arrays an
getTraceAsString();?>
__toString () Zeigt die gesamte Ausnahme als Zeichenfolge an
__toString();?>

Unten finden Sie die grundlegende Syntax zum Auslösen einer Ausnahme.

HIER,

  • "Throw" ist das Schlüsselwort, mit dem die Ausnahme ausgelöst wird
  • "Neue Ausnahme (...)" erstellt ein Ausnahmeobjekt und übergibt als Nachrichtenparameter die Zeichenfolge "Dies ist ein Ausnahmebeispiel".

Der obige Code gibt die folgende Nachricht aus.

Wir werden uns nun ein Beispiel ansehen, das die Throw- und Catch-Ausnahmen implementiert.

Wir werden das obige Beispiel modifizieren und versuchen, werfen und fangen.

Es hat die folgende grundlegende Syntax.

HIER,

  • "Try {…}" ist der auszuführende Codeblock, der möglicherweise eine Ausnahme auslösen kann
  • "Catch (Exception $ e) {…}" ist der Codeblock, der die ausgelöste Ausnahme abfängt und das Ausnahmeobjekt der Variablen $ e zuweist.

Der folgende Code zeigt das grundlegende Ausnahmebeispiel mit der implementierten Try-, Throw- und Catch-Ausnahme.

Das Programm löst absichtlich eine Ausnahme aus, die es dann abfängt.

getMessage();echo "";echo "getCode(): " . $e->getCode();echo "";echo "__toString(): " . $e->__toString();}?>

Öffnen Sie die URL http: //localhost/phptuts/exception_handling.php. Sie erhalten die folgenden Ergebnisse.

Es ist auch möglich, mehrere Ausnahmen für eine PHP-Try-Anweisung zu erstellen, abhängig von der Art der ausgelösten Ausnahme.

Siehe den Artikel über MySQL, PHP-Datenzugriff

… Für Implementierungsbeispiele mehrerer Ausnahmen

Mehrere Ausnahmen

Mehrere Ausnahmen Verwenden Sie mehrere try catch-Blöcke, um die ausgelösten Ausnahmen zu behandeln. Mehrere Ausnahmen sind nützlich, wenn;

  • Sie möchten abhängig von der ausgelösten Ausnahme eine benutzerdefinierte Nachricht anzeigen
  • Sie möchten abhängig von der ausgelösten Ausnahme eine eindeutige Operation ausführen

Das folgende Flussdiagramm zeigt, wie mehrere Ausnahmen funktionieren

Let’s look at an example that uses multiple exceptions.

We will modify the code that divides a number by the passed in denominator.

We expect two types of exceptions to occur;

  • Division by zero
  • Division by a negative number

For simplicity’s sake, we will only display the exception type in our catch blocks.

The PHP built in Exception class is used to throw exceptions.

We will create two classes that extend the exception class and use them to throw exceptions.

The code below shows the implementation.

Testing the code

We will assume you saved multiple_exceptions.php in phptuts folder.

Browse to the URL http://localhost/phptuts/multiple_exceptions.php

Switch back to the PHP file and pass -1 as the parameter as shown in the following diagram.

Browse to the URL http://localhost/phptuts/multiple_exceptions.php.

Welche Ergebnisse erzielen Sie? Übergeben Sie 3 als Parameter.

Welche Ergebnisse erzielen Sie?

Zusammenfassung

  • Fehler sind unerwartete Ergebnisse, die durch PHP-Code erzeugt werden
  • Die Fehlerbehandlung verbessert die Anwendungsleistung
  • PHP verfügt über integrierte Funktionen, mit denen Sie die Art und Weise anpassen können, in der PHP Fehler meldet
  • Ausnahmen sind wie Fehler, können aber beim Werfen mit dem catch-Block abgefangen werden.
  • Das Anzeigen von Fehlermeldungen mit Fehlerinformationen wird als schlechte Sicherheitspraxis angesehen.