Foutafhandeling

Python voor gevorderde ontwikkelaars

Jasmin Ludolf

Senior Data Science Content Developer

Pandas-traceback

Traceback met code die expres een fout geeft

  • except, raise

  • Probeer te voorspellen hoe fouten kunnen ontstaan

Python voor gevorderde ontwikkelaars

Design thinking

  • Hoe gebruiken mensen onze custom functie?
  • Test verschillende aanpakken
  • Vind welke fouten kunnen optreden

Verschillende woon-werkverkeerstypen in de stad

Python voor gevorderde ontwikkelaars

Foutafhandeling in custom functies

def average(values):
    # Bereken het gemiddelde
    average_value = sum(values) / len(values)
    return average_value
Python voor gevorderde ontwikkelaars

Waar kan het misgaan?

  • average() verwacht een list of set
  • Geef meer dan één argument 🛑
  • Gebruik het verkeerde datatype 🛑
Python voor gevorderde ontwikkelaars

Waar kan het misgaan?

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

Traceback met TypeError

Python voor gevorderde ontwikkelaars

Eerdere foutafhandeling

  • Controlestroom if, elif, else
  • Docstrings
Python voor gevorderde ontwikkelaars

try-except

def average(values):

try:
# Code die een fout kan veroorzaken average_value = sum(values) / len(values) return average_value
except:
# Code die draait als er een fout optreedt print("average() accepteert een list of set. Geef het juiste datatype op.")
Python voor gevorderde ontwikkelaars

raise

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

# Draai als het datatype klopt average_value = sum(values) / len(values) return average_value
Python voor gevorderde ontwikkelaars

raise

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

# Draai als het datatype klopt average_value = sum(values) / len(values) return average_value
else: # Draai als er een Exception optreedt raise
Python voor gevorderde ontwikkelaars

raise TypeError

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

# Draai als het datatype klopt average_value = sum(values) / len(values) return average_value
else: # Draai als er een Exception optreedt raise TypeError("average() accepts a list or set, please provide a correct data type.")
Python voor gevorderde ontwikkelaars

raise TypeError-uitvoer

print(average(sales_dict))

TypeError-uitvoer met het aangepaste bericht om het juiste datatype te geven

Python voor gevorderde ontwikkelaars

try-except vs. raise

try-except

  • Voorkomt dat fouten worden geproduceerd
  • Voert volgende code toch uit

raise

  • Produceert een fout
  • Voorkomt uitvoering van volgende code
Python voor gevorderde ontwikkelaars

Laten we oefenen!

Python voor gevorderde ontwikkelaars

Preparing Video For Download...