php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.04.2007, 15:25  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von dr.e.
Hallo axo,

das ist mir etwas zu ungenerisch... Mein Ansatz war es ja, einen globalen ExceptionHandler zu implementieren, damit man nicht jedesmal den Ärgern mit den 1000 Code-Zeilen hat...
das ist nicht ungenerisch sondern wie es sich gehört.
* es passiert ein fehler => wirf eine exception
* wenn der aktuelle kontext nicht weiß nicht wie der fehler behandelt werden soll => lass den fehler hochwandern.
* der default_exception_handler() kümmert sich um die allerletzte instanz und deckt den fall auf dass du vergessen hast, einen fehler abzufangen.

das ist mehr als generisch genug und der richtige weg, fehler von einem layer zum nächsten weiterzugeben, bis jemand (code oder mensch) den fehler korrigiert.

das argument des zentralisierten logging zählt auch nicht, denn das logging zieht sich eh auch durch den kompletten kot.
axo ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.04.2007, 16:54  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo axo,

dann hast du aber immer noch das Problem nicht gelöst, dass du den ErrorHandler jedes Mal anpassen muss um eine Exception hinzuzufügen oder den Code lokal in deinem Anwendungsteil nochmals implementieren musst... Das kann man nicht wegdiskutieren!

Zitat:
das argument des zentralisierten logging zählt auch nicht, denn das logging zieht sich eh auch durch den kompletten kot.
Das verstehe ich nicht. "Zentrales Logging" bedeutet für mich, dass die Methode oder der Service, der sich auf das Logging spezialisiert hat zentral bereitgestellt wird und man sich beispielsweise dort, wo man den "Logger" benötigt die Instanz dessen holt.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 13.04.2007, 20:46  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von dr.e.
Hallo axo,

dann hast du aber immer noch das Problem nicht gelöst, dass du den ErrorHandler jedes Mal anpassen muss um eine Exception hinzuzufügen oder den Code lokal in deinem Anwendungsteil nochmals implementieren musst... Das kann man nicht wegdiskutieren!
ich will ja auch gar nichts wegdiskutieren. wenn man einen fehler hinzufügt (und an einer neuen stelle eine exception wirft) muss man sich doch wohl auch an einer anderen stelle drum kümmern, dass dieser fehler auch korrigiert bzw. korrekt behandelt wird - das ist sinn und sache des programmierens, oder? und dadurch, dass exceptions ebenfalls eine vererbungshierarchie haben, hat man die wunderschöne möglichkeit, einige exceptions gemeinsam zu behandeln.

nochmal: stellen wir uns ein system vor und
PHP-Code:
<?php
try {
  
muchToDo();
  try {
    
muchMoreToDo(); 
  } catch (
SuperSpecialException $e) {
     
handleSuperSpecialException();
  }
  
anythingElseToDo();
} catch (
SomeException $e) {
  
// SomeException behandeln
} catch (SomeOtherException $e) {
  
// bla
} catch (Exception $e) {
 
// bla
}
ist deutlich
* übersichtlicher
* praktischer

als
PHP-Code:
try {
  
muchToDo();
} catch (
Exception $e) {
  
handleException($e);
}

function 
handleException(Exception $e) {
  if (
$e instanceof SomeThing) {
         
// bla
  
}
  
// bla

weil du dir den kompletten sinn des exception handling verbaust und im prinzip ein sauberes konstrukt (gesonderter execution path der ausnahmebehandlung) ins alte php4-system zwängst. sinn und zweck der exceptions ist die weitergabe von fehlernachrichten an strikt voneinander getrennte layer. das kann man sich vorstellen als "ich löse alle probleme, die ich selbst lösen kann, nur die die ich nicht lösen kann (weil mir die zusatzinformationen fehlen) gebe ich an meinen vorgesetzten weiter". das ist doch der punkt - nur damit kannst du deine software ordentlich layern und sauber kapselung betreiben.

Zitat:
Das verstehe ich nicht. "Zentrales Logging" bedeutet für mich, dass die Methode oder der Service, der sich auf das Logging spezialisiert hat zentral bereitgestellt wird und man sich beispielsweise dort, wo man den "Logger" benötigt die Instanz dessen holt.
ganz genau. und das hat nix mit fehlerbehandlung zu tun, d.h. das ziel, mit der zentralen fehlerbehandlung auch das logging zentralisieren zu können ist so nicht erreichbar. das war alles was ich damit sagen wollte.
axo ist offline  
Alt 14.04.2007, 00:28  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo axo,

Zitat:
das kann man sich vorstellen als "ich löse alle probleme, die ich selbst lösen kann, nur die die ich nicht lösen kann (weil mir die zusatzinformationen fehlen) gebe ich an meinen vorgesetzten weiter". das ist doch der punkt - nur damit kannst du deine software ordentlich layern und sauber kapselung betreiben.
Hmm, mein Ansatz - und der war theoretischer Natur - war, dass ich ein Exception-Handling nach einem zentralen Interface "irgendwo" einhängen kann und das mir die Möglichkeit bietet, meine Fehlerbehandlung - ähnlich dem Notify-Listener-Prinzip einer Runtime - zu registrieren und auszuführen. Kann gut sein, dass ich hier versuche die PHP4-Probleme zu lösen, da ich noch zu wenig in PHP5 denke... Ich gebe mich geschlagen!


Zitat:
ganz genau. und das hat nix mit fehlerbehandlung zu tun, d.h. das ziel, mit der zentralen fehlerbehandlung auch das logging zentralisieren zu können ist so nicht erreichbar. das war alles was ich damit sagen wollte.
Wenn wir hier übreinkommen, dass wir sehr wohl ein zentrales Fehler-Handling haben, aber kein Exception-Handling, dann bin ich bei dir!
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Herkunftsland so einfach wie möglich ermitteln? R4v3r PHP Tipps 2008 10 29.07.2008 14:40
Einzeltreffer von MATCH ... AGAINST ... ermitteln proud Datenbanken 3 09.05.2008 08:31
Auf static Methode von variabler Klasse zugreifen Riks PHP Tipps 2007 11 16.03.2007 15:08
Methode als gz_handler? Andreas PHP-Fortgeschrittene 5 11.04.2006 14:14
Die Position ein. Datensätzes aus einer Datenliste ermitteln Locutus007 Datenbanken 8 07.03.2006 16:59
Methode kann Methode nicht verwenden PHP Tipps 2006 2 05.03.2006 21:30
Dateiname, Dateigröße ermitteln HTML, Usability und Barrierefreiheit 5 29.01.2006 22:16
build nummer des bs ermitteln ... nur bei microsoft's bs!!! PHP Tipps 2005-2 2 24.07.2005 15:59
[Erledigt] Rekursive Methode PHP-Fortgeschrittene 7 02.06.2005 15:09
PHP5: Klassenattribut für statische Methode, mit Vererbung PHP-Fortgeschrittene 9 24.05.2005 09:35
Besucher mit den meisten GB Einträgen ermitteln! Datenbanken 7 21.04.2005 12:09
CRC Summe einer Datei ermitteln?? PHP Tipps 2004 1 14.10.2004 09:23
Methode kapseln PHP Tipps 2004 2 12.10.2004 10:53
[Erledigt] Tabellenname eines Feldes ermitteln PHP-Fortgeschrittene 3 22.09.2004 15:49
Zweithöchsten Wert ermitteln bicpi Datenbanken 6 12.09.2004 14:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ungenerisch, skype.de fehlerbehandlung

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.