Moin!
try
{
$instance = new class_xyz();
}
catch (Exception $e)
{
echo "Klasse wurde noch nicht implementiert.";
}
>
> Ich nutze außerdem \_\_autoload. Dieses prüft das Vorhandensein des Klassenfiles und included es dann. Deswg. brauch ich für das Instanzieren ein try catch.
Nein, brauchst du absolut nicht.
Wenn dein Autoloader eine Klasse nicht finden kann, und deshalb ein Objekt nicht instanziiert werden kann, dann ist das ein extrem heftiger Fehler, der zu Recht mit dem Programmabbruch geahndet wird.
Autoloading sorgt, wenn es funktioniert, automatisch dafür, dass alle die angeforderten Klassen includiert und verfügbar sind, wenn sie benötigt werden. Dafür ist im instanziierenden Code keinerlei Fehlerbehandlung durch Abfangen von Exceptions notwendig.
Denn viel spannender ist ja, was nach deinem Code passiert! Du hast $instance, und darin wäre jetzt KEIN Objekt der Klasse class\_xyz. Deine Exception wäre geworfen, der Code läuft aber weiter. Irgendwann wirst du zwangsläufig $instance benutzen wollen - und zwar so, als wäre darin eine Klasse class\_xyz drin, was aber nicht der Fall ist. Dieses Problem müsstest du aber dann erneut behandeln... das Ergebnis ist, dass du in deinen Code so viel Fehlerbehandlung eintragen musst, dass es einfacher ist, wenn du einfach eine Datei anlegst, die dein Autoloader durch Benutzen der Klasse "class\_xyz" einbindest, und dorthinein die Dummy-Zeile schreibst
~~~php
<?php
echo "Klasse class_xyz wurde noch nicht implementiert.";
Und deine Instanziierung ist dann ganz normal:
$instance = new class_xyz();
Der Effekt ist fast derselbe.
- Sven Rautenberg