tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
191
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Milliongame Milliongame ist offline Mitglied Bronze
    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:

    PHP-Code:
    function exceptionHandler($exception) {
        if (
    $exception instanceOf BasicException) {
            
    $exception->handleException();
        }
        
        if (
    $exception instanceOf AbstractFatalException) {
            exit;
        }
        
        return 
    true;

    Struktur / Vererbungsbaum der Exceptions:
    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:
    PHP-Code:
    set_exception_handler('exceptionHandler');

    throw new 
    AbstractDisplayAbleException();

    echo 
    "weiter ausgeführt"// wird nicht mehr angezeigt / behandelt 
    Muss der ExceptionHandler einen bestimmten Wert zurück geben oder muss ich etwas anderes beachten werden, damit das Script weiter fortgeführt wird?

    Noch am Rande die Frage, soll ich lieber den InstanceOf-Operator benutzen oder die PHP-Funktion is_a() ?
     

  2. #2
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    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

  1. Warum wirft Exception andere Exception?
    Von Onkel Schuppig im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 01.03.10, 13:45
  2. adress of a handler
    Von DerStauner im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 16.01.09, 11:44
  3. Click Handler ?!
    Von rollerueckwaerts im Forum Flash Plattform
    Antworten: 5
    Letzter Beitrag: 11.02.08, 17:04
  4. SAX Handler Sonderzeichen
    Von Tobias Köhler im Forum Java
    Antworten: 5
    Letzter Beitrag: 01.10.07, 12:24
  5. Message Handler
    Von Silvercreast im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 06.10.05, 09:14