13 Fehlerbehandlung
| Fehlertyp | Beschreibung |
|---|---|
SyntaxError |
Fehler in der Code-Syntax |
TypeError |
Falscher Typ einer Variablen oder eines Arguments |
ValueError |
Ungültiger Wert für eine Operation |
IndexError |
Zugriff auf nicht vorhandenen Index in einer Liste |
KeyError |
Zugriff auf nicht vorhandenen Schlüssel in einem Dictionary |
ZeroDivisionError |
Division durch Null |
FileNotFoundError |
Datei nicht gefunden |
ImportError |
Modul kann nicht importiert werden |
try und excepttry:
number = int(input("Enter a number: "))
print(10 / number)
except ZeroDivisionError:
print("Error: Division by zero is not allowed.")
except ValueError:
print("Error: Please enter a valid number.")
except-Blöcketry:
data = {"name": "Alice"}
print(data["age"])
except KeyError as e:
print(f"Missing key: {e}")
except Exception as e:
print(f"General error: {e}")
except-Block (nicht empfohlen)try:
# Code that may raise an error
print(10 / 0)
except Exception as e:
print(f"An error occurred: {e}")
Dies fängt zwar alle Fehler ab, kann jedoch das Debugging deutlich erschweren!
else- und finally-Blöcketry:
with open("file.txt", "r") as file:
content = file.read()
except FileNotFoundError:
print("File not found.")
else:
print("File read successfully.")
finally:
print("This block always executes.")
raise auslösendef positive_number(number):
if number < 0:
raise ValueError("Number must be positive!")
return number
try:
positive_number(-5)
except ValueError as e:
print(f"Error: {e}")
class CustomError(Exception):
pass
try:
raise CustomError("This is a custom error!")
except CustomError as e:
print(f"Custom error: {e}")
print verwendenimport logging
logging.basicConfig(level=logging.ERROR, format='%(asctime)s - %(levelname)s - %(message)s')
try:
1 / 0
except ZeroDivisionError as e:
logging.error(f"An error occurred: {e}")
try und except dienen der Fehlerbehandlung.else-Block wird ausgeführt, wenn kein Fehler auftritt.finally-Block wird immer ausgeführt.raise können eigene Fehler erzeugt werden.