Datei öffnen
Die Verwendung von sys.exit ist sinnvoll bei Programmen, die von anderen Programmen als separate Prozesse aufgerufen werden, und an diese einen Statuscode zurück geben sollen. Konkrete Anwendungsfälle dafür können in der System-Administration liegen. Ansonsten bedarf es keines Aufrufs von sys.exit. Alle diesbezüglichen Beispiele, deren Anwendungen *nicht* mit einem externen Prozess auf genau diese Art und Weise kommunizieren, sind schlicht falsch.
Hey Leute Ich hätte doch nochmal eine kleine Frage:
Pseudocode:
Auch wenn hier viele geschrieben haben das die meisten sys.exist sehr selten benötigt haben hätte erneut eine abschließende Frage zu dem Thema mal angenommen Ich lasse o.g Skript Täglich laufen ( mit dem Aufgabenplaner) ohne try und except würde die Fehlermeldung nach oben prallen und das skript mit exit code 1 beenden alles soweit ok.Ich möchte diesen Fehler nun aber loggen wie würde Ich das den alternative sonst machen wenn Ich nun nicht nach den logger nicht sys.exit(1) aufrufe ? Ich meine sonst würde von dem Skript Exit Code 0 zurückgegeben werden und der Aufgabenplaner würde denken das alles ordnungsgemäß ausgeführt wurde und würde eventuell gar nicht die Maßnahmen die beim Aufgabenplaner hinterlegt sind ausführen ( zum Beispiel probier es jedes halbe Stunde erneut ....) Würdet ihr hier also sys.exit(1) benutzen oder nicht?
Pseudocode:
Code: Alles auswählen
import logging
import sys
def logger(meldung):
logging.basicConfig(filename='Fehler.log', filemode='w', level=logging.DEBUG, format='%(asctime)s %(message)s')
logging.error(meldung)
def main():
try:
f = open("doesnotexist")
except FileNotFoundError:
pfad = "doesnotexist"
logger(f"({pfad},ist nicht vorhanden")
´
if __name__ == "__main__":
main()
Auch wenn hier viele geschrieben haben das die meisten sys.exist sehr selten benötigt haben hätte erneut eine abschließende Frage zu dem Thema mal angenommen Ich lasse o.g Skript Täglich laufen ( mit dem Aufgabenplaner) ohne try und except würde die Fehlermeldung nach oben prallen und das skript mit exit code 1 beenden alles soweit ok.Ich möchte diesen Fehler nun aber loggen wie würde Ich das den alternative sonst machen wenn Ich nun nicht nach den logger nicht sys.exit(1) aufrufe ? Ich meine sonst würde von dem Skript Exit Code 0 zurückgegeben werden und der Aufgabenplaner würde denken das alles ordnungsgemäß ausgeführt wurde und würde eventuell gar nicht die Maßnahmen die beim Aufgabenplaner hinterlegt sind ausführen ( zum Beispiel probier es jedes halbe Stunde erneut ....) Würdet ihr hier also sys.exit(1) benutzen oder nicht?
Eine Vision ohne Aktion bleibe eine Illusion
Ach natürlich Ich Idiot stimmt Ich danke dir sparrow.Und ja kommt das so nicht häufig vor das man eventuell nicht alle Fehler abfangen kann dafür aber aber alles versucht zu loggen ?
Eine Vision ohne Aktion bleibe eine Illusion
Doch klar.
Das kann man so machen, also mit dem raise, oder man schaut, ob man das losging viel weiter oben setzt. Man könnte den Aufruf von main kapseln und dort alle Fehler loggen, die auftreten und dann mit raise weiter reichen
Das kann man so machen, also mit dem raise, oder man schaut, ob man das losging viel weiter oben setzt. Man könnte den Aufruf von main kapseln und dort alle Fehler loggen, die auftreten und dann mit raise weiter reichen