Fehlerbehandlung

Entwicklung mit Python für Fortgeschrittene

Jasmin Ludolf

Senior Data Science Content Developer

Pandas traceback

Traceback, der Code zeigt, der absichtlich einen Fehler zurückgibt

  • except, raise

  • Versuche vorauszuahnen, wie Fehler passieren könnten.

Entwicklung mit Python für Fortgeschrittene

Design-Thinking

  • Wie könnte man unsere benutzerdefinierte Funktion nutzen?
  • Probiere verschiedene Ansätze aus.
  • Finde heraus, welche Fehler auftreten könnten.

Verschiedene Arten von Pendeln in der Stadt

Entwicklung mit Python für Fortgeschrittene

Fehlerbehandlung in benutzerdefinierten Funktionen

def average(values):
    # Calculate the average
    average_value = sum(values) / len(values)
    return average_value
Entwicklung mit Python für Fortgeschrittene

Was könnten Nutzende falsch machen?

  • average() erwartet eine Liste oder eine Menge
  • Mehr als ein Argument übergeben 🛑
  • Falschen Datentyp verwenden 🛑
Entwicklung mit Python für Fortgeschrittene

Was könnten Nutzende falsch machen?

sales_dict = {"cust_id": ["JL93", "MT12", "IY64"],
              "order_value": [43.21, 68.70, 82.19]}
print(average(sales_dict))

Traceback mit TypeError

Entwicklung mit Python für Fortgeschrittene

Vorausschauende Fehlerbehandlung

  • Kontrollfluss if, elif, else
  • Docstrings
Entwicklung mit Python für Fortgeschrittene

try-except

def average(values):

try:
# Code that might cause an error average_value = sum(values) / len(values) return average_value
except:
# Code to run if an error occurs print("average() accepts a list or set. Please provide a correct data type.")
Entwicklung mit Python für Fortgeschrittene

raise

def average(values):
    # Check data type
    if type(values) in (list, set):

# Run if appropriate data type was used average_value = sum(values) / len(values) return average_value
Entwicklung mit Python für Fortgeschrittene

raise

def average(values):
    # Check data type
    if type(values) in (list, set):

# Run if appropriate data type was used average_value = sum(values) / len(values) return average_value
else: # Run if an Exception occurs raise
Entwicklung mit Python für Fortgeschrittene

Einen TypeError mittels raise auslösen

def average(values):
    # Check data type
    if type(values) in (list, set):

# Run if appropriate data type was used average_value = sum(values) / len(values) return average_value
else: # Run if an Exception occurs raise TypeError("average() accepts a list or set, please provide a correct data type.")
Entwicklung mit Python für Fortgeschrittene

Ausgabe eines ausgelösten TypeError

print(average(sales_dict))

TypeError-Ausgabe mit einer benutzerdefinierten Meldung, um den richtigen Datentyp anzugeben

Entwicklung mit Python für Fortgeschrittene

try-except vs. raise

try-except

  • Vermeidet Fehlermeldungen
  • Führt den nachfolgenden Code trotzdem aus

raise

  • Wird einen Fehler verursachen
  • Vermeidet die Ausführung nachfolgenden Codes.
Entwicklung mit Python für Fortgeschrittene

Lass uns üben!

Entwicklung mit Python für Fortgeschrittene

Preparing Video For Download...