try-except
einpacken.
try:
eingeleitete Block ist der eigentliche Programmcode.
Ihm schließt sich ein oder mehrere except
Blöcke an.except:
angegeben landet jeder Fehler aus dem try
-Block sofort dort.except
-Blöcke angegeben, so müssen alle (bis auf den letzten) den Fehler
angeben, den sie behandeln.
try:
s = input("Zahl eingeben:")
i = int(s)
e = 5/i
print(e)
except ValueError:
print("Das war keine Zahl")
except ZeroDivisionError:
print("Das war eine 0")
except:
print("Anderer Fehler")
while True:
try:
s = input("Zahl eingeben:")
i = int(s) # hier wird ggf. die Exception geworfen
break # hier endet die Schleife
except ValueError:
pass
except ValueError as e:
.print(str(e))
verwenden um die Exception auszugeben.
assert Bedingung
eine Zusicherung einfordern. Ist die Bedingung falsch wird ein
AssertionError
geworfen, den man in except AssertionError:
behandeln kann.
while True:
try:
s = input("Zahl eingeben:")
i = int(s) # ggf. ValueError
assert i>0 # ggf. AssertionError
break # hier endet die Schleife
except ValueError:
print("Eine Zahl, Alter!")
except AssertionError:
print("Sei mal positiv!")
raise Exception("Informativer Text")
kann man selbst eine Exception auslösen.
while True:
try:
s = input("Zahl eingeben:")
i = int(s) # ggf. ValueError
if i<0:
raise ValueError("zu negativ") # ValueError mit eigener Meldung
break # hier endet die Schleife
except ValueError as e:
print("Fehler", str(e))
try-except
-Block kann ein finally
-Block angehängt werden.finally
-Block werden auf jeden Fall ausgeführt!finally
-Block gleich wie ein Code-Block der nach dem try-except
kommt.
try
oder except
-Block z.B. ein break oder return stattfindet.finally
-Block wird trotzdem ausgeführt.
while True:
try:
s = input("Zahl eingeben:")
i = int(s) # ggf. ValueError
break # hier endet die Schleife
except ValueError:
print("Eine Zahl, Alter!")
finally:
print("Immer")
print("Immer")
wird hier ausgeführt, egal ob ein ValueError auftritt oder nicht!
print("immer") nur bei einem Fehler ausgeführt wird, da sonst das break die Schleife beendet
while True:
try:
s = input("Zahl eingeben:")
i = int(s) # ggf. ValueError
break # hier endet die Schleife
except ValueError:
print("Eine Zahl, Alter!")
print("Immer")
finally
wird meist eingesetzt um aufzuräumen: Hier schließt man offene Dateien, beendet Datenbank-Verbindungen sauber etc.BaseException ├── BaseExceptionGroup ├── GeneratorExit ├── KeyboardInterrupt ├── SystemExit └── Exception ├── ArithmeticError │ ├── FloatingPointError │ ├── OverflowError │ └── ZeroDivisionError ├── AssertionError ├── AttributeError ├── BufferError ├── EOFError ├── ExceptionGroup [BaseExceptionGroup] ├── ImportError │ └── ModuleNotFoundError ├── LookupError │ ├── IndexError │ └── KeyError ├── MemoryError ├── NameError │ └── UnboundLocalError ├── OSError │ ├── BlockingIOError │ ├── ChildProcessError │ ├── ConnectionError │ │ ├── BrokenPipeError │ │ ├── ConnectionAbortedError │ │ ├── ConnectionRefusedError │ │ └── ConnectionResetError │ ├── FileExistsError │ ├── FileNotFoundError │ ├── InterruptedError │ ├── IsADirectoryError │ ├── NotADirectoryError │ ├── PermissionError │ ├── ProcessLookupError │ └── TimeoutError ├── ReferenceError ├── RuntimeError │ ├── NotImplementedError │ └── RecursionError ├── StopAsyncIteration ├── StopIteration ├── SyntaxError │ └── IndentationError │ └── TabError ├── SystemError ├── TypeError ├── ValueError │ └── UnicodeError │ ├── UnicodeDecodeError │ ├── UnicodeEncodeError │ └── UnicodeTranslateError └── Warning ├── BytesWarning ├── DeprecationWarning ├── EncodingWarning ├── FutureWarning ├── ImportWarning ├── PendingDeprecationWarning ├── ResourceWarning ├── RuntimeWarning ├── SyntaxWarning ├── UnicodeWarning └── UserWarning