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.