saftmeister
Nutze den Saft!
Ach du Schande ist das kompliziert.
Am Anfang scheint es kompliziert, aber bei OOP muss man sich erstmal angewöhnen, objekt-orientiert zu denken. Du bist da schon auf einem guten Weg
Wie oben schon geschrieben kommt halt jetzt ne Fehlermeldung, wegen diesen "new Exception".
Was macht eigentlich dieses throw new Exception? Es sieht irgendwie aus, als würde das nur etwas ausgeben, so wie echo.
Eine Exception wirft (throw) man dann, wenn man den weiteren Ablauf aufgrund einer bestimmten Bedingung oder eines Fehlers nicht weiter ausführen lassen will. Das ist vergleichbar mit "gib einen Fehler mit echo aus, und geh dann mit return aus der Funktion raus". Das Werfen einer Exception führt aber sogar noch dazu, dass wenn deine Methode, in der die Exception geworfen wird, verlassen wird, auch die aufrufende Methode nicht weiter verarbeitet wird. Das geht solange im Aufruf-Baum (Call-Stack) zurück, bis die Exception gefangen (catch) wird. Hier ein Beispiel:
PHP:
class B
{
public function machWasKomplettAnderes()
{
// hier die mega-wichtige Geschäftslogik der machWas-Methode
/*** ..... ***/
$wert = false;
// Und eine Bedingung, die eine Exception verursachen wird:
if( $wert == false )
{
throw new Exception("Was zur Hölle...");
}
}
}
class A
{
public function machWas()
{
// Erzeuge eine neue Instanz von B
$b = new B();
// Rufe ne Methode von B auf
$b->machWasKomplettAnderes();
// Der Code hier wird nicht mehr ausgeführt werden:
$c = 5;
echo $c;
}
}
// Exception-Handling - abfangen von Exceptions
try
{
$a = new A();
$a->machWas();
}
catch(Exception $ex)
{
// Hier kommt der Text der Exception aus B an und kann mittels getMessage()-Methode abgeholt und dargestellt werden
echo $ex->getMessage();
}
Glaub mir, wenn du das Prinzip mal verstanden hast, wirst du die Vorteile darin erkennen - Exceptions sparen viel Zeit beim Debuggen.