Kapitel 9
Ein- und Ausgabe
262
Wenn in diesem Skript beim Öffnen der Datei etwas schiefläuft, bricht die Programmaus-
führung nicht ab, sondern es wird die
except-Klausel ausgeführt. Im Rest dieses Abschnittes
lernen Sie noch zwei weitere Techniken kennen, die Zuverlässigkeit von Programmen, die
auf Dateien zugreifen, zu verbessern.
9.2.1 try...finally
Durch eine try...finally-Anweisung kann eine Anweisungsfolge definiert werden, die
in jedem Fall, auch wenn zuvor ein Laufzeitfehler aufgetreten ist, ausgeführt wird. Man ver-
wendet diese Kontrollstruktur, um zu garantieren, dass bei Programmabbrüchen wichtige
Aufräumarbeiten, wie z.B. das Schließen von Dateien oder das Trennen von Netzwerkver-
bindungen, doch noch ausgeführt werden. Die Syntax lautet:
Zuerst wird die try-Klausel ausgeführt (Versuch, den gelesenen Text in eine Integer-Zahl
umzuwandeln).
Falls der Versuch scheitert, merkt sich das System die Ausnahme und führt dann zuerst
die
finally-Klausel aus. Die finally-Klausel wird auch ausgeführt, wenn es keinen
Fehler gibt.
Im Ausnahmefall folgen dann schließlich der Programmabbruch und die Meldung der
Ausnahme.
try-Anweisungen werden sehr oft bei Zugriffen auf Dateien angewendet, um einen Ein-/
Ausgabefehler (
IOError) abzufangen.
Das folgende Beispiel illustriert die Verwendung von
try im Zusammenhang mit Dateien.
In der
try-Klausel (#1) wird versucht, eine Datei mit dem Namen daten.txt im Ordner
c:\daten zu öffnen. Diese Anweisung scheitert, wenn das Verzeichnis c:\daten nicht
existiert. Dann bricht das Programm ab. In der
finally-Klausel wird jedoch auf jeden Fall
(auch bei Programmabbruch) eine Sicherheitskopie im Ordner
c:\temp abgelegt.
try:
f = open("/Python35/README.txt")
except:
print("README-Datei konnte nicht geöffnet werden")
try:
anweisungsblock 1
finally:
anweisungsblock 2
daten = input('Daten: ')
pfad = input('Pfad: ')
try:
f = open(pfad, 'w') #1
f.write(daten)
f.close()
print('Daten gespeichert')

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.