Ihr Programm ändern für Klarheit ein wenig fließen und versuchen Exception-Handler für sparen, wenn Ihr Programm in signifikanter Weise versagt und muss den Benutzer warnen oder vollständig Programmablauf (Ausnahmebedingungen) ändern. Ausnahmen gibt es als eine Art Protokoll, wenn das System ein Problem nicht beheben kann.
Wenn Sie aus einem Flugzeug springen müssen, ist das Letzte, was Sie herausfinden wollen, dass es keine Fallschirme gibt. Verwenden Sie also os.path.exists()
, um Ihnen mitzuteilen, ob ein Pfad gültig ist, wenn Sie eine Ausnahme behandeln. Der sicherste Standardwert ist das aktuelle Verzeichnis, auf das unter Verwendung von .
als Pfad zugegriffen werden kann. Wenn nicht, sollten Sie davon ausgehen können, dass das Benutzerverzeichnis bereits existiert, nur für den Fall, dass Ihr Code abstürzen und brennen muss. mkdir
bevor Sie Ausnahmen behandeln müssen, nicht nach.
Achten Sie auch darauf, in Python richtig einzurücken. Der Abstand kann auch helfen, Fehler zu erkennen, also haben Sie keine Angst, einen Zeilenumbruch zu verwenden, wenn der Code einfacher zu lesen ist. Ihre try
Klausel erfordert eine zusätzliche Einrückungsebene:
try:
# simplify the if statement to stop repeating yourself
if not os.path.exists(project_dir):
os.makedirs(project_dir)
file_location = project_dir
except OSError as exc:
if exc.errno != errno.EEXIST:
raise # reraise the current exception
if os.path.exists(user_dir):
file_location = user_dir
else: # FUBAR. Sound sirens immediately and try everything to keep the file somewhere in memory before failing.
print("[ERROR] {} was inaccessible.\nWhile attempting to recover, {} did not exist so files could not be backed up."
.format(project_dir, user_dir))
raise
Der Ausfall eines Exception-Handler sollte nie passieren dürfen. Es ist ein katastrophales Ereignis, und Sie sollten erwarten, dass die einzige verbleibende Option Desktop-Crash ist. Eine Ausnahme kann abgefangen und wiederhergestellt werden. Zwei oder drei verschachtelte Ausnahmen bedeuten, dass dein Computer Empfindungsvermögen erreicht hat und damit begonnen hat, seine digitalen Schäkel zu stürzen (oder dass du darüber nachdenken musst, warum du Ausnahmen handelst).
Bitte geben Sie Ihren Code so ein, dass er die tatsächlichen Einrückungen widerspiegelt, die Sie verwenden. – patrick
Willkommen bei StackOverflow. Bitte lesen und befolgen Sie die Buchungsrichtlinien in der Hilfe. [Minimales, vollständiges, überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) gilt hier. Wir können Ihnen nicht effektiv helfen, bis Sie Ihren MCVE-Code veröffentlicht und das Problem genau beschrieben haben. Wir sollten in der Lage sein, Ihren gesendeten Code in eine Textdatei einzufügen und das beschriebene Problem zu reproduzieren. – Prune
danke, Patrick mein Versuch, diesen Beitrag zu machen, aber es wird runterkommen! –