PHP -Tutorial

PHP-HOME PHP-Einführung PHP-Installation PHP-Syntax PHP-Kommentare PHP-Variablen PHP-Echo / Drucken PHP-Datentypen PHP-Strings PHP-Nummern PHP-Mathematik PHP-Konstanten PHP-Operatoren PHP If...Else...Elseif PHP-Schalter PHP-Schleifen PHP-Funktionen PHP-Arrays PHP-Superglobals PHP-RegEx

PHP -Formulare

Handhabung von PHP-Formularen PHP-Formularvalidierung PHP-Formular erforderlich PHP-Formular-URL/E-Mail PHP-Formular vollständig

PHP- Erweitert

PHP-Datum und -Zeit PHP einschließen Umgang mit PHP-Dateien PHP-Datei öffnen/lesen PHP-Datei erstellen/schreiben Hochladen von PHP-Dateien PHP-Cookies PHP-Sitzungen PHP-Filter PHP-Filter für Fortgeschrittene PHP-Callback-Funktionen PHP-JSON PHP-Ausnahmen

PHP -OOP

PHP Was ist OOP PHP-Klassen/Objekte PHP-Konstruktor PHP-Destruktor PHP-Zugriffsmodifikatoren PHP-Vererbung PHP-Konstanten Abstrakte PHP-Klassen PHP-Schnittstellen PHP-Eigenschaften Statische PHP-Methoden Statische PHP-Eigenschaften PHP-Namespaces PHP-Iterables

MySQL- Datenbank

MySQL-Datenbank MySQL Connect MySQL-DB erstellen MySQL-Tabelle erstellen MySQL-Daten einfügen MySQL Letzte ID abrufen MySQL Mehrfach einfügen MySQL vorbereitet MySQL Select-Daten MySQL-Wo MySQL-Reihenfolge nach MySQL-Daten löschen MySQL-Update-Daten MySQL-Limit-Daten

PHP- XML

PHP-XML-Parser PHP-SimpleXML-Parser PHP SimpleXML - Get PHP-XML-Expat PHP-XML-DOM

PHP -AJAX

AJAX-Einführung AJAX-PHP AJAX-Datenbank AJAX-XML AJAX Live-Suche AJAX-Umfrage

PHP- Beispiele

PHP-Beispiele PHP-Compiler PHP-Quiz PHP-Übungen PHP-Zertifikat

PHP- Referenz

PHP-Übersicht PHP-Array PHP-Kalender PHP-Datum PHP-Verzeichnis PHP-Fehler PHP-Ausnahme PHP-Dateisystem PHP-Filter PHP-FTP PHP-JSON PHP-Schlüsselwörter PHP-Libxml PHP-Mail PHP-Mathematik PHP-Sonstiges PHP MySQLi PHP-Netzwerk PHP-Ausgabesteuerung PHP-RegEx PHP-SimpleXML PHP-Stream PHP-String Umgang mit PHP-Variablen PHP-XML-Parser PHP-Zip PHP-Zeitzonen

PHP- Ausnahmen


Was ist eine Ausnahme?

Eine Ausnahme ist ein Objekt, das einen Fehler oder ein unerwartetes Verhalten eines PHP-Skripts beschreibt.

Ausnahmen werden von vielen PHP-Funktionen und -Klassen ausgelöst.

Benutzerdefinierte Funktionen und Klassen können auch Ausnahmen auslösen.

Ausnahmen sind eine gute Möglichkeit, eine Funktion zu stoppen, wenn sie auf Daten stößt, die sie nicht verwenden kann.


Auslösen einer Ausnahme

Die throwAnweisung ermöglicht es einer benutzerdefinierten Funktion oder Methode, eine Ausnahme auszulösen. Wenn eine Ausnahme ausgelöst wird, wird der darauf folgende Code nicht ausgeführt.

Wenn eine Ausnahme nicht abgefangen wird, tritt ein schwerwiegender Fehler mit der Meldung „Uncaught Exception“ auf.

Versuchen wir, eine Ausnahme auszulösen, ohne sie abzufangen:

Beispiel

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

echo divide(5, 0);
?>

Das Ergebnis wird in etwa so aussehen:

Fatal error: Uncaught Exception: Division by zero in C:\webfolder\test.php:4
Stack trace: #0 C:\webfolder\test.php(9):
divide(5, 0) #1 {main} thrown in C:\webfolder\test.php on line 4

Die try...catch-Anweisung

Um den Fehler aus dem obigen Beispiel zu vermeiden, können wir die try...catchAnweisung verwenden, um Ausnahmen abzufangen und den Prozess fortzusetzen.

Syntax

try {
  code that can throw exceptions
} catch(Exception $e) {
  code that runs when an exception is caught
}

Beispiel

Eine Nachricht anzeigen, wenn eine Ausnahme ausgelöst wird:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide.";
}
?>

Der catch-Block gibt an, welche Art von Ausnahme abgefangen werden soll, und den Namen der Variablen, die für den Zugriff auf die Ausnahme verwendet werden kann. Im obigen Beispiel ist der Ausnahmetyp Exceptionund der Variablenname $e.


Das try...catch...finally-Statement

Die try...catch...finallyAnweisung kann verwendet werden, um Ausnahmen abzufangen. Code im finallyBlock wird immer ausgeführt, unabhängig davon, ob eine Ausnahme abgefangen wurde. Wenn finallyvorhanden, ist der catchBlock optional.

Syntax

try {
  code that can throw exceptions
} catch(Exception $e) {
  code that runs when an exception is caught
} finally {
  code that always runs regardless of whether an exception was caught
}

Beispiel

Zeigen Sie eine Nachricht an, wenn eine Ausnahme ausgelöst wird, und geben Sie dann an, dass der Prozess beendet wurde:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide. ";
} finally {
  echo "Process complete.";
}
?>

Beispiel

Gibt einen String aus, auch wenn keine Ausnahme abgefangen wurde:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} finally {
  echo "Process complete.";
}
?>

Das Ausnahmeobjekt

Das Ausnahmeobjekt enthält Informationen über den Fehler oder das unerwartete Verhalten, auf das die Funktion gestoßen ist.

Syntax

new Exception(message, code, previous)

Parameterwerte

Parameter Description
message Optional. A string describing why the exception was thrown
code Optional. An integer that can be used used to easily distinguish this exception from others of the same type
previous Optional. If this exception was thrown in a catch block of another exception, it is recommended to pass that exception into this parameter

Methoden

Beim Abfangen einer Ausnahme zeigt die folgende Tabelle einige der Methoden, die zum Abrufen von Informationen über die Ausnahme verwendet werden können:

Method Description
getMessage() Returns a string describing why the exception was thrown
getPrevious() If this exception was triggered by another one, this method returns the previous exception. If not, then it returns null
getCode() Returns the exception code
getFile() Returns the full path of the file in which the exception was thrown
getLine() Returns the line number of the line of code which threw the exception

Beispiel

Informationen über eine ausgelöste Ausnahme ausgeben:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero", 1);
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $ex) {
  $code = $ex->getCode();
  $message = $ex->getMessage();
  $file = $ex->getFile();
  $line = $ex->getLine();
  echo "Exception thrown in $file on line $line: [Code $code]
  $message";
}
?>

Vollständige Ausnahmereferenz

Eine vollständige Referenz finden Sie in unserer Complete PHP Exception Reference .

Die Referenz enthält Beschreibungen und Beispiele aller Exception-Methoden.