Allgemeine Fragen, Rückgabewerte, Errorlogging

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

  • Allgemeine Fragen, Rückgabewerte, Errorlogging

    Hallo,

    Ich stehe gerade vor einem Problem, in dem ich nicht weiterkomme, bzw. noch keine "durchdachte" Lösung gefunden habe.

    Folgendes Problem:
    Ich habe mehrere Klassen, die ich "überwachen" möchte, d.h. ich möchte wissen, wenn manche Klassen einen bekannten, möglichen Fehler zurückgeben.

    Beispiel:
    Klasse zu Übertragung von Dateien mittels XMLRPC.
    Wird eine Datei mittels XMLRPC übertragen, so können viele, bekannte und mögliche Fehler auftreten, z.b.:
    - Server nicht erreichbar
    - Datei falsch übermittelt (Hash)
    - etc.

    Diese Fehler möchte ich nun abfangen und loggen, damit ich diesen Fehler später untersuchen und beheben kann.

    Derzeit habe ich mir folgendes überlegt:
    Ich habe eine Liste von möglichen Errorcodes, die beschreiben, was der Fehler ist und wo dieser Auftreten kann:

    PHP-Code:

    # DB
    $_e[1] = array("DB_CONNECTION_FAILED""db connection failed"ERR_CRITICAL_ERROR);

    # Exec
    $_e[50] = array("EXEC_ERRORCODE_FALSE""return code was not 0"ERR_NORMAL); 
    Dabei hat jede Klasse einen eigenen Error-ID Bereich.

    In jeder Klasse erstelle ich nun die Abfragen um die Fehler zu erkennen, und übergebe eine Error-ID aus $_e.

    An jedem kritischem Punkt einer Methode, rufe ich die errorLog() Funktion auf, der ich ebenfalls eine Error-ID übergebe.
    Anhand der Stärke des Fehlers (ERR_CRITICAL_ERROR), entscheide ich in der errorLog()-Funktion, was nun passiert (SMS/eMail-Benachrichtigung, etc).

    Was mich nun gründsätzlich stört, ist, das in jeder Methode immer eine extra Funktion drinnen hab, und ansich nur an den Stellen, in der wirklich ein Kritischer-Fehler entstehen kann.

    Ich möchte nun eine Art Überwachung, bei der ich jeden Rückgabewert nachvollziehen kann und dynamisch entscheiden kann, welche Fehlerstärke nun was auslößt.
    Und zwar denke ich mir, das jeder Rückgabewert einer Methode, *immer* durch eine errorLog()-Funktion läuft, und ich so anhand der übermittelten Error-ID entscheiden kann, was nun kritisch ist, und was nicht.


    Ich weiß, ist alles ein wenig schwierig zu erklären, ich hoffe ich habe es soweit verständlich erklärt und ihr könnt nachvollziehen, was ich vorhabe.

    Was meint Ihr? Was gibt es sonst für Lösungen?
    Wie regelt Ihr das, wenn eine Methode mehrere Rückgabewerte zurückgeben kann?

    Und gibt es eine Möglichkeit, direkt in einer Methode/Funktion den eigenen Klassen/Methoden/Funktions-Namen anzuzeigen oder gar die aktuelle Zeile auszugeben, in der sich der Parser gerade findet? (Bei parse-errors zeigt PHP ebenfalls eine Zeile an).

    Vielen Dank.

    Gruß
    Kevin
    Zuletzt geändert von kevin-k; 22.03.2008, 18:42.

  • #2
    Exceptions?

    Kommentar


    • #3
      Japp, habs Posting auch gar nicht bis zum ende durchgelesen, weil ich erst gucken wollte, ob der Hinweis auf Exceptions nicht schon gegeben wurde.

      Kommentar


      • #4
        Hi,

        Hm, warum ist mir das vorher nicht eingefallen :S.
        Danke, werde mir das nochmals genauer ansehen.

        Nur eine Allgemeine Frage:
        Wie handelt das mit Rückgabewerten?
        Wie gibt man am besten Fehlerwerte zurück?


        Danke.

        Gruß
        Kevin

        Kommentar


        • #5
          Wie handelt das mit Rückgabewerten?
          Ziemlich ungenaue Fragestellung. Aber vielleicht beantwortet debug_backtrace deine Frage.

          Wie gibt man am besten Fehlerwerte zurück?
          Genauso unpräzise. Welche Fehlerwerte willst du wohin zurückgeben?

          Ich würde vorschlagen du informierst dich erstmal grundlegend und stellst im Anschluss noch mal ne konkrete Frage, falls die dann überhaupt noch offen ist.

          Kommentar


          • #6
            Nehmen wir an, wir haben eine File-Upload Klasse. Diese Klasse kann verschiedene Fehler produzieren:
            - Keine Datei angegeben
            - Datei defekt
            - Datei leer
            - and so on

            Was gebe ich als return-Wert der Methode an?
            "Nur" false? Damit weiß ich jedoch noch nicht den Fehler.

            Gebe ich nun -1, -2 zurück? Oder 1, 2? Oder einen String "empty file"?

            Wie macht man es "richtig"?

            Danke für debug_backtrace.

            Kommentar


            • #7
              Das wiederum sind imho ganz normale Prüfungen. Da reicht ein

              PHP-Code:
              if(datei kapott$error 'Ihre Datei enthält Fehler'
              schon ausreichen. Solche Fehler sollen ja schließlich nicht den Scriptabbruch zur folge haben, sondern dem User die Korrektur ermöglichen. (Stichwort: Affenformular)

              Kommentar

              Lädt...
              X