Hi,
hier eine kleine Beschreibung zu "Exception von Klasse zu Klasse"...
Es wird ein MVC-System genutzt, als erstes wird der Maincontroller aufgerufen.
Dieser ruft wiederrum den Modulcontroller auf, dieser verwendet verschiedene Klassen z.b. Datenbank, Filesystem usw...
Die letzteren Klassen Datenbank, Filesystem usw... werfen eine Exception
ein Beispiel:
So und jetzt zur frage...
Der Fehler wird nun also wie try-catch von dem Modulcontroller abgefangen, der Modulcontroller wiederrum ist aber nicht für die Ausgabe zuständig sondern der Maincontroller, soll nun der Modulcontroller einfach die Exception weiterreichen und der Maincontroller sie abfangen und wenn ja wie...
Mögliche Lösung...
Über Verbesserungsvorschläge usw. wäre ich sehr froh, thnx vorab...
hier eine kleine Beschreibung zu "Exception von Klasse zu Klasse"...
Es wird ein MVC-System genutzt, als erstes wird der Maincontroller aufgerufen.
Dieser ruft wiederrum den Modulcontroller auf, dieser verwendet verschiedene Klassen z.b. Datenbank, Filesystem usw...
Die letzteren Klassen Datenbank, Filesystem usw... werfen eine Exception
ein Beispiel:
PHP:
//DATENBANK
$this->link = mysql_connect($this->dbhost, $this->dbuser, $this->dbpass);
if(!is_resource($this->link)){
throw new Exception("Fehler beim aufbau der Verbindung zur Datenbank.\nMySQL Fehlermeldung: ".mysql_error()."\nMySQL FehlerNummer: ".mysql_errno());
}
Der Fehler wird nun also wie try-catch von dem Modulcontroller abgefangen, der Modulcontroller wiederrum ist aber nicht für die Ausgabe zuständig sondern der Maincontroller, soll nun der Modulcontroller einfach die Exception weiterreichen und der Maincontroller sie abfangen und wenn ja wie...
Mögliche Lösung...
PHP:
Modulcontroller
try{
...
}catch(Exception $e){
$error = "Fehlercode: ".$e->getCode()."\n";
$error.= "Entstanden in der Datei: ".$e->getFile()."\n";
$error.= "Enstanden in der Zeile: ".$e->getLine()."\n";
$error.= "Fehlerbeschreibung: ".$e->getMessage()."\n";
$error.= "Aufrufliste: ".$e->getTraceAsString();
throw new Exception($error);
}
Maincontroller{
try{
...
}catch(Exception $e){
//schreibt in eine Logdatei...
logerror($e);
//Der User brauch ja nicht wissen was jetzt genau der Fehler war...
print "Sorry es ist ein Fehler aufgetreten...";
}
Über Verbesserungsvorschläge usw. wäre ich sehr froh, thnx vorab...