PHP:
Fehlerbehandlung

Wie geht das:

In PHP kannst du Fehler mithilfe von try-catch-Blöcken verwalten und den Prozess mit benutzerdefinierten Fehlerbehandlungen und Ausnahmen individuell anpassen.

// Grundlegendes try-catch-Beispiel
try {
  // Etwas riskantes tun
  $file = fopen("nonexistentfile.txt", "r");
} catch (Exception $e) {
  // Den Fehler behandeln
  echo "Fehler: " . $e->getMessage();
}

// Einen benutzerdefinierten Fehlerbehandler einstellen
set_error_handler(function($severity, $message, $file, $line) {
  throw new ErrorException($message, 0, $severity, $file, $line);
});

// Ausnahmen verwenden
class MyException extends Exception {}

try {
  // Etwas tun und eine benutzerdefinierte Ausnahme auslösen
  throw new MyException("Benutzerdefinierter Fehler!");
} catch (MyException $e) {
  // Die benutzerdefinierte Ausnahme behandeln
  echo $e->getMessage();
}

// Beispiel-Ausgabe:
// Fehler: fopen(nonexistentfile.txt): failed to open stream: No such file or directory
// Benutzerdefinierter Fehler!

Vertiefung

Früher waren PHP-Fehler mehr Warnungen und Hinweise, die die Ausführung des Skripts nicht stoppten. Mit der Reife der Sprache wurde eine robustere objektorientierte Fehlerbehandlung eingeführt, beginnend mit der Exception-Klasse in PHP 5. Später brachte PHP 7 Fehlerklassen heraus, welche Fehler und Ausnahmen endlich unterschieden.

Vor try-catch-Blöcken benutzte PHP set_error_handler(), um mit Fehlern umzugehen. try-catch ist sauberer und moderner. Aber benutzerdefinierte Fehlerbehandler haben immer noch ihren Platz, besonders bei Altcode oder wenn nicht-ausnahmebezogene Fehler abgefangen werden müssen.

Das Throwable-Interface in PHP 7+ bedeutet, dass egal, ob es sich um einen Fehler oder eine Ausnahme handelt, du beides abfangen kannst. Dies ist praktisch, weil du jetzt kritische Laufzeitfehler, die zuvor schwerer zu verfolgen waren, nicht verpasst.

Alternativen zu PHPs integrierten Mechanismen umfassen Bibliotheken und Frameworks, die mit eigenen Fehlerbehandlungssystemen kommen und mehr Funktionen wie Fehlerprotokollierung in Dateien oder das Anzeigen benutzerfreundlicher Fehlerseiten bieten.

Siehe auch