Exceptions vs Logging



  • Folgendes Szenario: Ein Fehler passiert, bei dem ihr eine Exception werfen wollt. Die möglicherweise recht lange Fehlermeldung kann über eine extra Funktion bekommen werden. Loggt ihr jetzt direkt den langen Fehler und werft dann eine Exception mit einer kurzen Beschreibung, oder packt ihr alles in die Exception?



  • Die Frage macht keinen Sinn.
    Logging und Exceptions haben nichts miteinander zu tun.

    Eine lange Fehlermeldung ist unwichtig, da du die Beschreibung des Fehlers eh ueber den Fehlercode bekommst.



  • Shade Of Mine schrieb:

    Die Frage macht keinen Sinn.
    Logging und Exceptions haben nichts miteinander zu tun.

    Sehe ich auch so ähnlich.

    Fehler können sich sehr weit entfernt von der eigentlichen Ursache manifestieren. Wenn man keine guten Logfiles hat, hat man kaum Möglichkeiten rauszubekommen was die Ursache war.

    Eine lange Fehlermeldung ist unwichtig, da du die Beschreibung des Fehlers eh ueber den Fehlercode bekommst.

    Ich weiss nicht was der OP meint. Ich denke nur: der Fehlercode alleine ist zu wenig. "file not found". OK. Welches File nochmal?



  • hustbaer schrieb:

    Ich denke nur: der Fehlercode alleine ist zu wenig. "file not found". OK. Welches File nochmal?

    Die main()/FormLoad()/WinMain() oder so sagt eh nur
    "Es ist ein schwerwiegender Fehler aufgetreten. Bitte kontaktieren Sie Ihren Systemadministrator."
    Traurig, aber wahr.
    Ich habe den Eindruck, daß ich "echten" Softwarefirmen die Marketing-Leute warumauchimmer duchsetzen, daß die Fehlermeldungen bis zur Beleidigung verklärt werden.

    @exceptional: Natürlich kannst Du es besser machen. Gib einfach wahre Meldungen raus. Es hilft Dir und dem Kunden und dann wieder Dir in der Fehlersuche, weil der Kunde viel wahrscheinlicher "nachvollziehbare" Fehler packt.

    Logging ist unabhängig davon. Du loggst alles, was beim Debuggen hilft und vertretbar ist. Oki, nicht ganz unabhängig. Natürlich loggst Du auch alle Exceptions, die bis zur main() hpchkommen und das Programm terminieren (oder den Wäschetrockner rebooten).



  • volkard schrieb:

    Ich habe den Eindruck, daß ich "echten" Softwarefirmen die Marketing-Leute warumauchimmer duchsetzen, daß die Fehlermeldungen bis zur Beleidigung verklärt werden.

    Bei uns ist das Problem, dass jeder Text der dem User gezeigt wird freigegeben werden muss. Sprich es ist umstaendlich spezielle Fehlermeldungen anzuzeigen - deshalb wird alles generisch bezeichnet obwohl die genaue Information noch in der Exception stehen wuerde.



  • volkard schrieb:

    Logging ist unabhängig davon. Du loggst alles, was beim Debuggen hilft und vertretbar ist.

    Naja, da gäbe es ja den Ansatz bestimmte Dinge nur in einen Ringpuffer im Speicher zu loggen, und diesen dann nur ins Logfile zu schreiben wenn bestimmte Ereignisse wie eben z.B. eine Exception auftreten.
    Dadurch müllt man das Logfile nicht unnötig zu, bremst die Ausführung weniger, und hat im Falle des Falles trotzdem viel (hoffentlich hilfreiche) Informationen im Logfile.
    Wobei ich bis jetzt noch kein Programm gesehen habe das das wirklich so macht.



  • hustbaer schrieb:

    volkard schrieb:

    Logging ist unabhängig davon. Du loggst alles, was beim Debuggen hilft und vertretbar ist.

    Naja, da gäbe es ja den Ansatz bestimmte Dinge nur in einen Ringpuffer im Speicher zu loggen, und diesen dann nur ins Logfile zu schreiben wenn bestimmte Ereignisse wie eben z.B. eine Exception auftreten.
    Dadurch müllt man das Logfile nicht unnötig zu, bremst die Ausführung weniger, und hat im Falle des Falles trotzdem viel (hoffentlich hilfreiche) Informationen im Logfile.
    Wobei ich bis jetzt noch kein Programm gesehen habe das das wirklich so macht.

    Ja, der ist gut, dann aber frag ich mich wie groß dieser Ringpuffer sein soll? 😃
    6, 7? Oder doch nur 3, da man die Stelle des Fehlers schon ganz gut abschätzen kann?

    Die main()/FormLoad()/WinMain() oder so sagt eh nur
    "Es ist ein schwerwiegender Fehler aufgetreten. Bitte kontaktieren Sie Ihren Systemadministrator."
    Traurig, aber wahr.

    😮 Wow! So aussagereich! Bei mir sehen manche so aus:

    Error!

    0x684feb: System call on reserve autostatus
    0x6d4f8d: System thread terminated! unwinding stack! eax = 1

    Obwohl das immer noch mehr aussagt, als das oben...


Anmelden zum Antworten