Ošetření chyb

Intermediate Python for Developers

Jasmin Ludolf

Senior Data Science Content Developer

Traceback v Pandas

Traceback zobrazující kód, který záměrně vyvolá chybu

  • except, raise

  • Snažte se předvídat možné chyby

Intermediate Python for Developers

Design thinking

  • Jak mohou uživatelé používat vlastní funkci?
  • Otestujte různé přístupy
  • Zjistěte, jaké chyby mohou nastat

Různé způsoby dopravy ve městě

Intermediate Python for Developers

Ošetření chyb ve vlastních funkcích

def average(values):
    # Calculate the average
    average_value = sum(values) / len(values)
    return average_value
Intermediate Python for Developers

Kde může dojít k chybě?

  • average() očekává seznam nebo množinu
  • Zadání více než jednoho argumentu 🛑
  • Použití nesprávného datového typu 🛑
Intermediate Python for Developers

Kde může dojít k chybě?

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

Traceback s chybou TypeError

Intermediate Python for Developers

Dosavadní ošetření chyb

  • Řízení toku if, elif, else
  • Docstringy
Intermediate Python for Developers

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.")
Intermediate Python for Developers

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
Intermediate Python for Developers

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
Intermediate Python for Developers

raise TypeError

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.")
Intermediate Python for Developers

Výstup raise TypeError

print(average(sales_dict))

Výstup TypeError s vlastní zprávou o zadání správného datového typu

Intermediate Python for Developers

try-except vs. raise

try-except

  • Zabrání vzniku chyb
  • Pokračuje ve vykonávání kódu

raise

  • Vyvolá chybu
  • Zastaví vykonávání kódu
Intermediate Python for Developers

Pojďme si procvičit!

Intermediate Python for Developers

Preparing Video For Download...