| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Bewertung: |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.269
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Hallo, Zitat:
trigger_error() würde ich grundsätzlich nicht mehr benutzen, stattdessen lieber eine Exception werfen, die du dann an entsprechender Stelle fangen kannst. Ich biege bspw. mit set_error_handler() alle Fehler auf eine ErrorException um, so dass ich wirklich alles fangen kann, was zu fangen ist. Konstanten als Fehlermeldungen zu verwenden finde ich auch keine gute Idee, hat sich zumindest nicht als praktikabel erwiesen. Einfach englischen Kurztext tippen und vor der Ausgabe (falls du die Exception nicht fängst) einfach übersetzen (Array-Mapping oder wie dein Übersetzungsmodul funktioniert, falls du eines hast) oder im Produktivsystem sowieso durch eine deutsche Standardfloskel ersetzen. Exceptions sollten sowieso nicht bis zum Benutzer stossen, daher kann es - meiner Meinung nach - da auch ruhig technisch und englisch zur Sache gehen. Als Identifier für die Art der Exception benutze ich schändlicherweise die HTTP-Codes: 403, wenn die ACL deny meldet, 404 wenn ein Model nichts findet oder 500 bei anderen Sachen. Lies dich doch mal ins Exception-Handling ein.
__________________ "Nuschel ich?" - "Was?" | |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse: Fortgeschritten ![]() | Da die Fehlermeldungen den Benutzer nichts angehen handhabe ich das so wie Chriz - ich schreib das rein, was _mich_ an der Stelle interessiert. Über das ErrorReporting/Exceptions sammle ich mir dann noch notwendige Infos, schreib die in meine Log und zeig dem Benutzer "Es ist ein Fehler aufgetreten". Schließlich muss man ja nicht alles verkomplizieren - und sauberes Englisch sollte jeder verstehen, der sich mit ErrorLogs beschäftigen und am Script werkeln muss.
__________________ actra.development - Schwabstr. 2 - 70825 Münchingen www.actra.de/velopment/ - eMail: php.de@actra.de Zend Certified Engineer for PHP5 |
| | |
| | |
| Neuer Benutzer Registriert seit: 15.02.2011
Beiträge: 1
PHP-Kenntnisse: Fortgeschritten ![]() | Hi, wenn du auf Fehlercode stehst: Als eindeutiger Bezeichner eignet sich Dateipfad und Zeilennummer. Das lässt sich auch prima automatisieren Fehlermeldungen in meinen Projekten werden grundsätzlich per Mail verschickt und in einem Logfile gespeichert. Dabei enthält jede Meldung: - einen Titel (z.B. Exception-Message). Dieser muss (für dich) klar und verständlich ausdrücken, was schief gelaufen ist. Also nicht "Scheisse, geht nicht", sondern "Benutzer nicht eingeloggt: Mehr als ein Datensatz passte" - ein komplettes Backtrace (Skalar-und Array-Argumente mit Inhalt, bei Objekten nur Objekttyp) - eine (leicht gefilterte) Liste der globalen Variablen - oder, wenn Zend Framework zum Einsatz kommt, GET, POST, COOKIE, SESSION und SERVER - Zusätzlich noch ein paar wichtige Variablen deiner Applikation. Die Signatur meiner Funktion: ReportAppError(string $title, Exception $ex, ...) Sämtliche Argumente hinter $ex werden per print_r($x, true) an die Meldung angehängt. Hoffe das hilft - ist zumindest die Essenz von > 10 Jahren PHP Entwicklung. Grüße Thomas |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 10.10.2009
Beiträge: 2.637
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() | Nun, folgendes werde ich nun wohl umsetzen: Code: <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE errorSpec PUBLIC "-//Thryme CMS//Error Specification//EN" "../../dtd/errorSpec.dtd">
<errorSpec>
<notices>
<notice access="SY_NTC_APP_NAME" class="System" method="initialize" code="SY-000001" message="Application name not found, loading default Application '%S'" />
</notices>
<warnings>
<warning access="SY_WNG_QRY_STRING" class="System" method="initialize" code="SY-000010" message="Querystring was empty." />
</warnings>
<errors>
<error access="SY_ERR_EMPTY_EXT_LIST" class="System" method="initialize" code="SY-000020" message="No system class extensions could be found." />
<error access="SY_ERR_INV_EXTENSION" class="System" method="loadExtension" code="SY-000021" message="Invalid extension class name '%S'." />
</errors>
</errorSpec>
Geladen wird das ganze wie folgt: PHP-Code: Für Exceptions lege ich eine Klasse an welche mit den gleichen Parametern wie meine Funktion auskommt damit der Aufruf von "throw new" möglich bleibt und diese noich gefangen werden können. Kann man damit Leben?
__________________ "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst". |
| | |
| | |
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Ich halte sowas für unpraktikabel und praxisfern. Fehler sollten beseitigt werden, nicht kunstvoll geloggt. Zudem sind nur ein Teil von in PHP möglichen Fehlerklassen abzufangen (andere nur mit sehr viel FooBar). Ich würde zu Exceptions und einfachen Logfiles raten.
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- |
| | |
| | ||
| Erfahrener Benutzer Registriert seit: 10.10.2009
Beiträge: 2.637
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
An unserer Firma sehe ich was passiert wnen eine vernünftige Fehlerbehandlung fehlt und sich auf display_errors verlassen wird. Dem will ich entgegen wirken.
__________________ "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst". | |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] Framework Kernel Konzept | Geryon | Software-Design | 36 | 06.10.2010 22:23 |
| Konzept einer Datenbankabstraktion | Dark Guardian | Software-Design | 29 | 30.01.2010 18:13 |
| [Erledigt] Konzept für einen PHP Web Crawler | Dark Guardian | Software-Design | 10 | 23.11.2009 16:31 |
| Konzept für Bowsergame | Wiillli | Beitragsarchiv | 1 | 21.10.2009 15:18 |
| kleines DB Konzept | Tomte | Datenbanken | 21 | 23.08.2008 10:22 |
| Fehlermeldungen | FBI | PHP Tipps 2005-2 | 12 | 21.10.2005 16:08 |
| Keine Fehlermeldungen bei Objektzugriff | PHP Tipps 2005-2 | 1 | 20.09.2005 12:45 | |
| Konzept GFX-Community | PHP Tipps 2005-2 | 2 | 22.08.2005 10:22 | |
| keine Fehlermeldungen | Michel | PHP Tipps 2005-2 | 3 | 18.08.2005 18:11 |
| Fehlermeldungen trotz error_reporting(0) | PHP Tipps 2005-2 | 9 | 10.07.2005 16:34 | |
| mehr Fehlermeldungen | micbur | PHP Tipps 2005 | 2 | 27.05.2005 13:18 |
| Keine Fehlermeldungen | suter | PHP Tipps 2005 | 2 | 27.01.2005 09:56 |
| Formular Fehlermeldungen | Mano | PHP Tipps 2005 | 27 | 23.01.2005 20:03 |
| Fehlermeldungen mit Switch-Abfrage für $_GET['section'] | PHP-Fortgeschrittene | 9 | 22.09.2004 23:59 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| application load error 5:00, softwaredesign fehlerbehandlung fehlercodes, schlechte error meldungen, konzept fehlerbehandlung, fehlerbehandlung konzept, konzept fehlerbehandlung script, php keine fehlermeldungen, fehlerseiten ala php, fehlercodes konzept, set_exception_handler notice, fehlermeldung konzept, fehlerhandling konzept, php fehlerklasse, message konzept php, php fehlerbehandlung, application load error 5:00 deutsch, konzepte fehlerhandling in code, konzept fehlercodes exceptions, php error handling anschalten, 500 - ein fehler ist aufgetreten! db function reports no errors |