Mailinglisten-Archive |
..... Ollio ...... schrieb: > Hier sollen Werte auf einem mehrdimensionalen assoziativen Array aggregiert werden. D.h. wenn die Schlüsselkombination nicht vorhanden wird, wird ein Eintrag mit diesem Schlüssel angelegt und mit dem Wert initalisiert. Wenn schon vorhanden, wird der Wert zum bereits bestehenden hinzuaddiert: > > function array2m_collect ($arr, $merkmal1, $merkmal2,$wert) { > $merkmal1 = strtoupper($merkmal1); > $merkmal2 = strtoupper($merkmal2); > try { > $arr[$merkmal1][$merkmal2] += $wert; > } > catch(Exception $e) { > $arr[$merkmal1][$merkmal2] = $wert; > } > > } // array2m_collect Exception = Ausnahmen ich meine, wenn du bereits weißt das du an einer Stelle etwas überprüfen musst damit es ordentlich funktioniert ist das keine Ausnahme. > Problem > --------- > So wie es auf den ersten Blick aussieht, kann nun aber CATCH dummerweise Exceptions auffangen die im gleichen Funktionsblock geworfen werden. > Gibt es eine Möglichkeit generell auf lokaler Ebene d.h. im akutuellen Block eine an beliebigem Ort geworfene Exception abzufangen und zu bearbeiten. Nicht handelbare Exceptions müsste dann einfach auf die nächst äussere Ebene weitergereicht werden. > > Ich kenne sowas z.B in der Microsoft-Programmierung z.B in VB. Dort werden Systemereignisse wie Exceptions allen interessierten. d.h. registrierten Fehlerbehandlungsroutinen angeboten. Dabei beginnt die Durchreichung eines Fehler vom lokalen, Detailcode. Alle nicht behandelten Fehler werden dann entlang der Hierarchie hochgereicht. Mit anderen Worten die Fehler eskalieren entlang der Systemhierarchie. > > Ist so etwas in PHP (noch) nicht möglich? Was müsste ich tun, um das so zum laufen zu kriegen. Danke für euere Hinweise, Ollio du musst in dem catch block einfach eine neue exception werfen wenn du sie dort nicht behandeln kannst, dann 'blubbert' sie weiter -- Sebastian
php::bar PHP Wiki - Listenarchive