ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
191
191
EMPFEHLEN
-
20.11.11 14:35 #1
- Registriert seit
- Oct 2007
- Beiträge
- 31
Hallo,
ich habe über set_exception_handler() einen ExceptionHandler definiert, jedoch endet die Ausführung des Programms immer, nach dem dieser aufgerufen wurde. Hier der ExceptionHandler:
Struktur / Vererbungsbaum der Exceptions:PHP-Code:function exceptionHandler($exception) {
if ($exception instanceOf BasicException) {
$exception->handleException();
}
if ($exception instanceOf AbstractFatalException) {
exit;
}
return true;
}
BasicException -> AbstractDisplayAbleException -> AbstractFatalException
D.h. sobald eine AbstractFatalException oder deren Kinder geworfen wird, soll das Script beendet werden, nach dem diese behandelt wurde. Wird eine AbstractDisplayAbleException geworfen, soll das Script fortgesetzt werden, nach dem der ExceptionHandler ausgeführt wurde (ausgenommen AbstractFatalException und deren Kinderklassen).
Jedoch wird bei jeder Exception die den Handler passiert das Script beendet, Verdeutlichung:
Muss der ExceptionHandler einen bestimmten Wert zurück geben oder muss ich etwas anderes beachten werden, damit das Script weiter fortgeführt wird?PHP-Code:set_exception_handler('exceptionHandler');
throw new AbstractDisplayAbleException();
echo "weiter ausgeführt"; // wird nicht mehr angezeigt / behandelt
Noch am Rande die Frage, soll ich lieber den InstanceOf-Operator benutzen oder die PHP-Funktion is_a() ?
-
20.11.11 17:20 #2
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Also zum allgemeinen Verständnis: Eine Exception ist immer eine Unterbrechung des Programmablaufs. Da ist nix mit "soll weiter ausgeführt werden". Wenn du bestimmten Code in jedem Falle ausgeführt haben willst, musst du um den Code, der eine Exception werfen könnte, ein try-catch drum herum codieren. Falls du aus der Java-Ecke kommst: ein finally gibts in PHP auch nicht.
Da instanceof und is_a() das gleiche machen, ist es belanglos und lediglich eine Frage es Geschmacks. Ich würde instanceof bevorzugen, da eine Funktion innerhalb von Klassen-Code das Code-Bild "stört". Wenn möglich verzichte ich auf Funktionen aus dem Standard-Namensraum und verwende lieber Klassen aus SPL. Bei manchen ist das nicht möglich, aber dort wo es geht... instanceof sieht im Klassen-Code einfach etwas schöner aus. Es ist eine Geschmacksfrage.Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
Ähnliche Themen
-
Warum wirft Exception andere Exception?
Von Onkel Schuppig im Forum C/C++Antworten: 5Letzter Beitrag: 01.03.10, 13:45 -
adress of a handler
Von DerStauner im Forum .NET Windows FormsAntworten: 1Letzter Beitrag: 16.01.09, 11:44 -
Click Handler ?!
Von rollerueckwaerts im Forum Flash PlattformAntworten: 5Letzter Beitrag: 11.02.08, 17:04 -
SAX Handler Sonderzeichen
Von Tobias Köhler im Forum JavaAntworten: 5Letzter Beitrag: 01.10.07, 12:24 -
Message Handler
Von Silvercreast im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 06.10.05, 09:14





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren