Momentan fange ich eine ganze Reihe von Fehlern in meinem Skript jeweils ab, indem ich die Anweisung mit Try: kapsele. Es wird dann jeweils der Inhalt einer Log-Datei per Mail verschickt. Die Meldungen werden mit log.debug oder log.info erfasst
Die Fehler betreffen dadurch natürlich immer konkret eine spezielle Anweisung
Ist es auch möglich generelle Fehler, z.B. sogar Syntax-Fehler abzufangen und den Fehlertext ebenfalls in eine Logdatei zu leiten und dann zu mailen?
Skriptfehler generell abfangen und behandeln ...
- DeaD_EyE
- User
- Beiträge: 1023
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Die Fehler könnte man abfangen. Man muss halt wissen, dass beim Import eines Moduls der komplette Code einmal durch den Parser läuft und in ByteCode übersetzt wird und danach wird er sogar ausgeführt. Beim Import könnte man den Fehler abfangen:
Wenn man sich solche Konstrukte in sein Programm einbaut, macht man aber was gewaltig falsch.
Will man sein Programm testen, sollte man unittest oder vergleichbares einsetzen. Das hat noch den Vorteil,
dass man nicht nur syntaktische Fehler sofort präsentiert bekommt, vielmehr testet man Funktionen seines Codes
auf Richtigkeit.
Code: Alles auswählen
try:
import foo
except SyntaxError:
print('Module Foo has a syntax error')
Will man sein Programm testen, sollte man unittest oder vergleichbares einsetzen. Das hat noch den Vorteil,
dass man nicht nur syntaktische Fehler sofort präsentiert bekommt, vielmehr testet man Funktionen seines Codes
auf Richtigkeit.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
- noisefloor
- User
- Beiträge: 3863
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Gruß, noisefloor
Nee - auch bei diesem Ansatz hast du mindestens ein Python-Skript, was Syntaxfehler enthalten könnten, aber in keinem try...except Block stehen kannDie Fehler könnte man abfangen.
Gruß, noisefloor
Irgendwie erscheint mir das sehr falsch.drnicolas hat geschrieben:Momentan fange ich eine ganze Reihe von Fehlern in meinem Skript jeweils ab, indem ich die Anweisung mit Try: kapsele. Es wird dann jeweils der Inhalt einer Log-Datei per Mail verschickt. Die Meldungen werden mit log.debug oder log.info erfasst
Erstens gibt es 5 Stufen und bei einem Fehler würde ich auch eine Fehlermeldung (logging.error()) und hier speziell mittels logging.exception() absetzen. Wenn Du später mal die Stufe, ab der Meldungen abgesetzt werden, hochschraubst, bekommst Du von den Fehlern nichts mehr mit. Bei einem Fehler möchte ich schon gerne sehen, woran es gescheitert ist.
Logger.exception(msg, *args, **kwargs)
Logs a message with level ERROR on this logger. The arguments are interpreted as for debug(). Exception info is added to the logging message. This method should only be called from an exception handler.
Code: Alles auswählen
>>> import logging
>>> try:
1 / 0
except ZeroDivisionError:
logging.exception("War was falsch...")
ERROR:root:War was falsch...
Traceback (most recent call last):
File "<pyshell#5>", line 2, in <module>
ZeroDivisionError: division by zero