Hauptmenü

Untermenü

OOP PHP5 - Fehlerbehandlung - Ausnahmen

1. Versuchen, fangen, schmeißen

Mit diesen drei Begriffen kann man die Fehlerbehandlung in PHP5 beschreiben. Als Erstes versucht man etwas (try), wenn das misslingt, fängt (catch) man das ab, um dann mit den Meldungen um sich zu schmeißen (throw). Und dem entsprechend sieht das dann so aus:


class fehlermeldung extends Exception {}
try
{
  tuWas();
}
catch (Exception $ausnahme_1)
{
  // 1. Ausnahme
}
catch (Exception $ausnahme_2)
{
  // 2. Ausnahme
}

2. Ausnahmebehandlung

Bei den Interfaces und Methoden hatten wir schon mal ein Beispiel, wo unser Objekt "Dieter" über ein paar Methoden verfügen sollte, damit er es sich bei "Dörte" nicht verscherzt. Dazu gehörte auch das "Blumen mitbringen". Allerdings nicht nur eine, sondern ganz viele. Eine entsprechende Ausnahmebehandlung könnte dann so aussehen.


class frauenexception extends Exception {}

class Traummann
{
  public function blumenMitbring($blumen)
  {
    if (!is_array ($blumen) || count ($blumen) < 20)
    {
      throw new frauenexception (
                                  'Ich wollte viele Blumen,
                                  nicht nur eine, du Geizhalz',
                                  10);
    }
    else
    {
      $treffer 'Ins Schwarze. Da geht heute noch was';
      return $treffer;
    }
  }
}
$dieter = new Traummann;
try
{
  $erfolg_bei_frauen $dieter -> blumenMitbring ('Tulpe');
  echo $erfolg_bei_frauen;
}
catch (frauenexception $exception)
{
  echo 'Code: '.$exception -> getCode().'<br>';
  echo 'Fehler: '.$exception -> getMessage().'<br>';
  echo 'Datei: '.$exception -> getFile().'<br>';
  echo 'Zeile: '.$exception -> getLine().'<br>';
}

Erläuterung

Mit class frauenexception extends Exception {} erzeugen wir eine "leere" Klasse für die Ausnahmebehandlung bei Frauenwünschen. In der Klasse Traumman sagen wir dann in der Methode blumen_mitbring, dass es schon ein ordentlicher Strauß sein sollte, also ein Array mit mindestens 20 Werten (Blumen). Wenn dem nicht so ist, wird eine entsprechende Meldung mit samt eines "Fehlercodes", also der Zahl 10, ausgegeben. Der wird allerdings willkürlich definiert, also zum Beispiel vom Projektmanager vorgegeben. In diesem Fall müsste der Entwickler in einem Handbuch nachschauen, um herauszufinden, dass der Parameter $blumen ein Array mit mindestens 20 Werten sein muss.

Anschließend erzeugen wir unser Objekt "Dieter" und versuchen (try) uns an der Methode blumen_mitbring. Leider schlägt das fehl, da unser Dieter nur mit einer dämlichen Tulpe anrückt. Also fangen (catch) wir das ab, indem wir mit ein paar Standardmethoden der Exception-Klasse(!) uns die entsprechenden Hinweise ausgeben lassen.

catch (frauenexception $exception) ... $exception -> get...

Mit diesem Konstrukt erzeugt man ein "Ausnahme"-Objekt aus der "leeren" Klasse frauenexception. Damit erst hat man direkten Zugriff auf die Eigenschaften und Methoden der Exception-Klasse (eingebunden über class frauenexception extends Exception).

3. Fazit

Dies ist nur ein erster Einblick in die Ausnahmebehandlung. Tatsächlich sind die Möglichkeiten viel komplexer, als ich hier beschrieben habe. Beim Einstiegstutorial 2 werdet ihr dann mit der Praxis konfrontiert.

zurück zum vorherigen Abschnitt