Seite 1 von 2

Re: Datei öffnen

Verfasst: Donnerstag 13. Mai 2021, 09:00
von kbr
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.

Re: Datei öffnen

Verfasst: Donnerstag 13. Mai 2021, 09:26
von Bl3nder
Ok Ich danke euch :)

Re: Datei öffnen

Verfasst: Samstag 22. Mai 2021, 03:49
von Bl3nder
Hey Leute Ich hätte doch nochmal eine kleine Frage:

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?

Re: Datei öffnen

Verfasst: Samstag 22. Mai 2021, 07:24
von sparrow
Du möchtest nur loggen und ansonsten das Verhalten nicht ändern? Ein raise am Ende des except-Blocks reicht die Exception weiter.

Re: Datei öffnen

Verfasst: Samstag 22. Mai 2021, 07:43
von Bl3nder
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 ?

Re: Datei öffnen

Verfasst: Samstag 22. Mai 2021, 08:33
von sparrow
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