PHP5 Exceptions (bin ich zu doof??)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP5 Exceptions (bin ich zu doof??)

    Hi,
    ich rätsle hier über ein Problem, dass ich nicht verstehe.
    Es geht um Exception handling in PHP5.

    also ich habe 3 klassen, die alle von einander erben (die parameter sind immer die der konstruktoren):

    Exception (PHP5 intern)
    --- SystemException($errorsignal, ...)
    -------- IOException ($errorsignal, $filename)
    --------------- FileNotFoundException($filename)


    und eine ExceptionCollection klasse die direkt von SystemException konstruktor gefüttert wird. (ist auch nicht so wichtig, nur da ist mir der fehler erst aufgefallen.

    Nun zum Problem:
    also ich werfe FileNotFoundException('test.xml'). der konstruktor macht eigentlich nur:
    parent:__construct("FileNotFound", $filename)

    und die IOException::__construct($signal, $filname) macht im prinzip nur:
    parent::__construct($signal, $filename)


    SystemException macht dann die verarbeitung der exception und das hinzufügen zur ExceptionCollection

    was ich nun nicht verstehe: ich habe obwohl ich FileNotFoundException nur einmal werfe zwei einträge in die ExceptionCollection. (Beide einträge vom typ: Object FileNotFoundException)


    wenn ich mal einfach nur ein paar ausgaben rein machen sieht man das sowohl SystemException, als auch IOException zweimal ausgeführt werden (dadurch dann auch der doppelte eintrag in der collection) FileNotFoundException dagegeben nur einmal.

    Aber es kommt noch bunter:

    wenn ich jetzt in der FileNotFoundException::__construct() den aufruf der parent::__construct() aus kommentriere führt er den IOException::__construct trotzdem (einmal) aus noch noch besser ist er weiß sowohl das richtige $errorsignal also auch den $filename (es wird nicht in irgendwelche eigenschaften gespeichert oder ähnliches)

    vielleicht könnt ihr mir das ja mal erklären?
    hier noch ein paar code ausschnitte:

    Code:
    class SystemException
     extends Exception
    {
            function __construct($errorsignal)
            {
                 //...
                SystemExceptionCollection::Add($this);
            }
    }
    
    class IOException
     extends SystemException
    {
            function __construct($errorsignal, $filename)
            {
                 parent::__construct($errorsignal, $filename);
            }
    }
    
    class FileNotFoundException
     extends IOException
    {
            function __construct($filename)
            {
                 parent::__construct("FileNotFound", $filename);
            }
    }

  • #2
    hat sich erledigt...

    irgendwie hat ZendStudio eine zeile unterschlagen... als ich das script kopiert habe, standen dort plötzlich zwei parent::__construct()...

    trotzdem danke für jeden der sich gedanken gemacht hat

    Kommentar

    Lädt...
    X