php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.07.2010, 12:43  
Neuer Benutzer
 
Registriert seit: 23.07.2010
Beiträge: 6
PHP-Kenntnisse:
Anfänger
airobix befindet sich auf einem aufstrebenden Ast
Standard

Ok, wie ich sehe ist mein Problem zu Allgemein um Regeln abzuleiten. Zumindest weiß ich nun, wofür man Exceptions nicht verwenden sollte. Vielen Dank für die schnellen und kompetenten Antworten.
airobix ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.07.2010, 12:44  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.129
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Das ist richtig, aber aus meiner Erfahrung ist es so, dass die Fehler in 99% der Fälle relevant sind, da die meisten Aktionen durch eine Aktion des Benutzers ausgelöst werden (Irgendwas erstellen, bearbeiten, löschen, verheiraten, was auch immer) und schon aus Performance-Gründen immer alle Fehler mit einem Mal ausgegeben werden.
xm22 ist offline   Mit Zitat antworten
Alt 26.07.2010, 12:48  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.255
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Dann finde ich allerdings bereits Exceptions schon fehl am Platz. Informationen, die an den Nutzer rausgehen sind IMHO per Definition keine Ausnahmen, sondern erwartetes (vorhersehbares) Programmverhalten. Eine Person kann verheiratet sein, das ist kein Ausnahmefall. Der Versuch, diese Person trotzdem zu verheiraten ist einer - weil eine vorhergehende Prüfung nicht erfolgt ist oder nicht beachtet wurde..

Ich lege Exceptions auch prinzipiell technisch an, d.h. technische Fehlermeldungen, keine die für den Endnutzer bestimmt sind.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 26.07.2010, 12:54  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.129
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

So meinte ich das ja auch. Exceptions wären hier nur angebracht, wenn mann man marry() ohne explizite Prüfung durchführen würde.
xm22 ist offline   Mit Zitat antworten
Alt 26.07.2010, 13:03  
Neuer Benutzer
 
Registriert seit: 23.07.2010
Beiträge: 6
PHP-Kenntnisse:
Anfänger
airobix befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von xm22 Beitrag anzeigen
Exceptions wären hier nur angebracht, wenn mann man marry() ohne explizite Prüfung durchführen würde.
Haha, trifft auch auf die echte Welt da draußen zu. Amen
airobix ist offline   Mit Zitat antworten
Alt 06.08.2010, 09:39  
Erfahrener Benutzer
 
Benutzerbild von MaxC
 
Registriert seit: 02.08.2010
Beiträge: 117
PHP-Kenntnisse:
Anfänger
MaxC befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

bin durch die Forensuche auf diesen Thread gestossen. Ich hoff es ist OK wenn ich ihn nochmal aufwärme, auch wenn meine Frage eher ins Anfängerforum gehört.

Versuche gerade herauszufinden, wann eine Exception verwendet werden sollte bzw. wann man z.B. false zurückliefert und ggf. eine normale Fehlermeldung ausgibt.

Hab schon ne Weile gesucht, aber finde meistens nur Aussagen wie "ICH mache das so", "ICH finde man sollte es so machen" usw.
Gibt es dafür keine allgemein gültige Regel oder hab ich sie einfach noch nicht gefunden oder verstanden?

nikosch Aussage hilft mir da schon ein wenig weiter bzw. deckt sich mit vielen Aussagen die ich bisher gelesen habe:
Zitat:
Ich lege Exceptions auch prinzipiell technisch an, d.h. technische Fehlermeldungen, keine die für den Endnutzer bestimmt sind.
aber so ganz versteh ich das leider (noch) nicht.
Wie ist technisch in diesem Fall gemeint? Und wenn diese Fehler nicht für den Endnutzer bestimmt sind, wie reagiert man wenn sie in einem Live-System auftreten und die Anwendung deshalb nicht fortgesetzt werden kann?

Das Beispiel mit dem verheiraten ist mir leider auch zu hoch *schäm*
MaxC ist offline   Mit Zitat antworten
Alt 06.08.2010, 10:21  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.129
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Gibt es dafür keine allgemein gültige Regel
Dann gäbe es diesen Thread nicht Es gibt höchstens ein paar Orientierungspunkte, die wiederum aber von jedem anders priorisiert werden..

Technisch meint, dass z. B. ein Fehler in der DB auftritt - Das soll nun natürlich nicht beim Benutzer ankommen, für die Applikation bzw. der Entwickler ist es hingegen schon wichtig, das mitzubekommen.

An so einer Stelle hat es sich m. E. nach durch gesetzt, dem Benutzer eine allgemeingültige Fehlermeldung zu präsentieren (Z. B. "Ein technischer Fehler ist aufgetreten. Bitte versuchen Sie es in ein paar Minuten noch einmal"), oder den Grund andernweitig zu verschleiern. Das sollte man allerdings natürlich so gering wie möglich halten
xm22 ist offline   Mit Zitat antworten
Alt 06.08.2010, 14:43  
Neuer Benutzer
 
Registriert seit: 25.07.2010
Beiträge: 27
PHP-Kenntnisse:
Fortgeschritten
chesssteve befindet sich auf einem aufstrebenden Ast
Standard

Muss eigentlich eine Exception immer ein Fehlerfall sein?

Ich hatte mal einen Sudokusolver geschrieben. Der hat diverse Lösungsalgorithmen durchgeackert, auf verschiedenen Ebenen: Feld - Zeile, Spalte, Block - Zelle. Im Endefekt waren es mehrere geschachtelte Schleifen.
Je nachdem, wo eine Lösung gefunden wurde, habe ich ein Lösungsobjekt zurückgegeben, also über mehrere Iterationsstufen von unten nach oben.

Ein erfahrener JAVA-Entwickler meinte, ich solle besser eine Solving-Exception auslösen - ich habe mich aber letztendlich doch dagegen entschieden.

Was meint ihr, ist das ein Missbrauch von Exceptions, oder ein legitimes Vorgehen?
chesssteve ist offline   Mit Zitat antworten
Alt 06.08.2010, 16:24  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.255
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Naja, @beide Fragesteller, diese Frage kann man nicht allgemeingültig beantworten und es gibt zum Glück nicht auch noch dafür ein Gesetz oder eine verbindliche Vorgabe.
Die Verwendung und die Legitimation ist schon recht subjektiv, was den Solver anbelangt erreicht das Dimensionen wie die klassische Diskussion um vorzeitige Schleifenabbrüche oder gar die goto-Anweisung, die in PHP z.B. (aktuell noch) verpönt ist, in anderen Sprachen vielleicht Gang und Gäbe.

Exceptions sind sehr mächtig, weil sie durch die gesamte Applikationsstruktur fließen, bis zum obersten Script des Aufrufsstacks. Das macht sie gleichermaßen gefährlich, weil man schnell die Übersicht verlieren kann
- woher ein Fehler plötzlich kommt
- wo zum Teufel mein frisch geworfener Fehler ausgewertet wird.
Gerade, weil fehlererzeugender Kontext und aufrufender Kontext nicht zwingend vom selben Programmierer stammen müssen können diese Fragen schnell relevant werden.

Kurz zur Auswertung: Sicher wird man zustimmen, dass eine Auswertung an oberster struktureller Ebene für den Anwennder kaum mehr Sinn macht - alle Ausgabe und grafischen Ebenen sind hier durchlaufen und der Nutzer bekommt bestenfalls eine Textmeldung. Eine grafische Auswertung (z.B. eine Fehlerseite im Seitenlayout) kann auf der anderen Seite vielleicht gar nicht funktionieren, weil das Layout aus Modulen oder gar Datenbankzugriffen gebildet wird. Tritt gerade dort der Fehler aus, kann das dann nicht funktionieren.

Vielleicht mal ein paar Punkte zum Nachdenken.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 07.08.2010, 08:59  
Erfahrener Benutzer
 
Benutzerbild von MaxC
 
Registriert seit: 02.08.2010
Beiträge: 117
PHP-Kenntnisse:
Anfänger
MaxC befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Antworten!

Zitat:
Kurz zur Auswertung: Sicher wird man zustimmen, dass eine Auswertung an oberster struktureller Ebene für den Anwennder kaum mehr Sinn macht - alle Ausgabe und grafischen Ebenen sind hier durchlaufen und der Nutzer bekommt bestenfalls eine Textmeldung. Eine grafische Auswertung (z.B. eine Fehlerseite im Seitenlayout) kann auf der anderen Seite vielleicht gar nicht funktionieren, weil das Layout aus Modulen oder gar Datenbankzugriffen gebildet wird. Tritt gerade dort der Fehler aus, kann das dann nicht funktionieren.
Du machst mich fertig, nikosch
Also ich versteh schon wie du das meinst. Jetzt bin ich aber soweit zu sagen:
- Exception nur dann, wenn die Applikation nicht weitergeführt werden kann (z.B. Datenbankzugriff fehlgeschlagen) -> einfache Fehlerseite mit einer Meldung wie von xm22 beschrieben. Ein eleganter Ersatz für die()?! hehe
Zitat:
... dem Benutzer eine allgemeingültige Fehlermeldung zu präsentieren (Z. B. "Ein technischer Fehler ist aufgetreten. Bitte versuchen Sie es in ein paar Minuten noch einmal"), oder den Grund andernweitig zu verschleiern. ...
- für alle anderen Fehler ein normaler Textstring der an entspr. Stelle im Template eingebaut wird

Keine Ahnung ob das Sinn macht. Ein Java-Entwickler würde wahrscheinlich die Hände über dem Kopf zusammenschlagen
Ich kann natürlich nur auf Erfahrungen aus meinen Mini-Applikationen bzw. Spielerein zurückgreifen, in diesen Fällen ist aber dieses Vorgehen irgendwie logisch für mich.
MaxC ist offline   Mit Zitat antworten
Antwort


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
[Erledigt] Zip Archive mit PHP erstellen - Kein Fehler, aber ZIP Archiv ist nicht da robat PHP Tipps 2010 34 09.03.2011 20:17
Funktion rename() auf USB-Festplatten bringt Fehler Wing PHP Tipps 2010 13 16.07.2010 23:00
MySQL: Fehler 10046 keine Datenbank ausgewählt aschunk Datenbanken 5 22.04.2010 12:27
[Erledigt] Syntax Error - Wo ist der Fehler? Extremefall PHP Tipps 2009 5 14.12.2009 17:46
[Erledigt] vista, windows update Fehler 80070422 Screeze Off-Topic Diskussionen 3 23.09.2009 18:24
[Erledigt] Fehler bei Array ausgabe newWorldOrder PHP Tipps 2009 2 23.02.2009 17:29
Include fehler abfangen? fadass PHP Tipps 2005-2 16 23.12.2008 13:07
Frage: Suche Fehler in diesem Script... PHP Tipps 2005-2 14 25.10.2005 19:24
[Erledigt] [phpmailer] - SMTP Fehler: Die folgenden Empfänger sind ... PHP Tipps 2005-2 1 05.10.2005 15:19
Seite wird nicht angezeigt, untersch. Fehler bei IE/FF/Safar PHP-Fortgeschrittene 19 31.05.2005 14:52
Blöder MySQL Fehler PHP Tipps 2005 3 15.05.2005 03:14
Fehlermeldung - aber kein fehler... Tschuu HTML, Usability und Barrierefreiheit 16 14.03.2005 15:56
[Erledigt] Wo liegt der fehler?? PHP-Fortgeschrittene 5 22.12.2004 09:54
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 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