Die Anhebung builtin Ausnahme mit Standard-Nachricht in python
Ich versuche, eine Methode zu implementieren, die einen Fehler zurückgibt, sobald ein bestimmtes Verzeichnis nicht existiert.
Anstatt raise OSError("Directory does not exist.")
aber ich will das builtint Fehlermeldung von OSError: OSError: [Errno 2] No such file or directory:
. Das ist, weil ich bin Anhebung eine Ausnahme in den Anfang der Methode nennen, eher als später (die berufen sich auf die gleiche Nachricht von python, ohne notwendige raise
).
Irgendwelche Hinweise? (außer manuell tun OSError("[Errno 2] No such file or directory: ")
)
- Die Ausnahme auslöst, und lassen Sie es propagieren?
- Warum wollen Sie nicht erhöhen, Ausnahme sich am Anfang der Methode aufgerufen wird, z.B. mit
raise OSError(...)
? Es ist eine vollkommen Valide Art, erzählt Ihre Anrufer, dass es ein problem gibt. - Genau das, was ich versuche zu tun ~ ich war gerade auf der Suche nach einem Weg, um Zugriff auf die integrierten Fehlermeldungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
produziert
So, zum generieren eines
OSError
mit einer ähnlichen Nachricht verwendenerrno
Modul undos.strerror
zu übersetzen, um eine lokalisierte Fehlermeldung-Zeichenfolge ist vorzuziehen, die auf hart codierte Werte:OSError(errno.ENOENT, os.strerror(errno.ENOENT), filename)
Bekommen die Fehlermeldung für einen Fehler-code, die Sie möglicherweise verwenden möchten
os.strerror
:Auch, möchten Sie vielleicht die Verwendung
errno
- Modul mit der standard-Abkürzungen für diese Fehler:Ich denke, dass die "Ausnahme" ist der Python-Begriff für das, was Sie nennen "Fehler". Also verwenden Sie diesen Begriff, wie Sie suchen für mehr Informationen.
Vielleicht finden Sie es nützlich zu Lesen, die Python Standard-Bibliothek-Dokumentation, "6. Built-in Exceptions".
OSError
ist einer der eingebauten exceptions. Es ist definiert in der "Built-in Ausnahmen" Abschnitt, der hinzufügt, "Dieerrno
Attribut einen numerischen Fehlercode aus errno, und diestrerror
- Attribut wird die entsprechende saite, als würde gedruckt werden, indem die C-Funktionperror()
. Das Modulerrno
, die enthält die Namen für die Fehler-codes definiert, die vom zugrunde liegenden Betriebssystem."Dieser code ausgeführt:
gibt mir dieses Ergebnis:
So, ich denke, dein code könnte so etwas machen:
Ich denke, das eigentliche problem hier ist, dass Sie wahrscheinlich tun eine Reihe von Kontrollen im Vorfeld, anstatt nur zu versuchen.
ist viel besser als: