Ausnahmebehandlung
Fehlerbehandlung
Häufig findet man folgende Fehlerbehandlung
- sofortiger Abbruch mit die oder exit
die("Wenden Sie sich an den Administrator"); - Unterdrückung von Fehlermeldungen mit @
@$f = fopen("myfile.txt","r");
Probleme
- unvollständige Seite wird zum Browser geschickt
- leere Seiten oder Layout-Katastrophen
- Anwender erhält keine Rückmeldung
Ausnahmebehandlung: wie es sein sollte
PHP hat echte Ausnahmebehandlung (wie Java)
- Fehler können mit
try/catchbehandelt werden finallyfür Aufräumarbeiten- sinnvolle Meldungen können ausgegeben werden
- Seite kann ordentlich abgeschlossen werden
function problematisch() {
throw new Exception("Meine Fehlermeldung");
}
try {
problematisch();
}
catch (Exception $e) { // Fehlerbehandlung
echo $e->getMessage();
}
Exceptions
Basisklasse aller Ausnahmen ist Klasse Exception
- beliebige eigene Ausnahmen daraus ableitbar
- keine vordefinierten Exception-Klassen in PHP
Keine vorhandene PHP-Funktion wirft Ausnahmen, nur neuere Klassen
Beispiel: Eigene Ausnahmen
class MyException extends Exception { }
class AnotherException extends Exception { }
try {
// tu was gefährliches
throw new MyException("Mein Fehler", 99);
}
catch (MyException $e) {
echo "MyException: ", $e->getMessage();
}
catch (AnotherException $e) {
echo "AnotherException: ", $e->getMessage();
}
MyException: Mein Fehler