Obsługa błędów

Python dla programistów – poziom średniozaawansowany

Jasmin Ludolf

Senior Data Science Content Developer

Traceback w Pandas

Traceback przedstawiający kod celowo generujący błąd

  • except, raise

  • Przewidywanie potencjalnych błędów

Python dla programistów – poziom średniozaawansowany

Design thinking

  • Jak użytkownicy mogą korzystać z naszej funkcji?
  • Testowanie różnych podejść
  • Identyfikacja potencjalnych błędów

Różne środki transportu w mieście

Python dla programistów – poziom średniozaawansowany

Obsługa błędów w funkcjach niestandardowych

def average(values):
    # Calculate the average
    average_value = sum(values) / len(values)
    return average_value
Python dla programistów – poziom średniozaawansowany

Gdzie mogą wystąpić błędy?

  • average() oczekuje listy lub zbioru
  • Podanie więcej niż jednego argumentu 🛑
  • Użycie niewłaściwego typu danych 🛑
Python dla programistów – poziom średniozaawansowany

Gdzie mogą wystąpić błędy?

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

Traceback z TypeError

Python dla programistów – poziom średniozaawansowany

Dotychczasowa obsługa błędów

  • Przepływ sterowania if, elif, else
  • Docstrings
Python dla programistów – poziom średniozaawansowany

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.")
Python dla programistów – poziom średniozaawansowany

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
Python dla programistów – poziom średniozaawansowany

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
Python dla programistów – poziom średniozaawansowany

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.")
Python dla programistów – poziom średniozaawansowany

Wynik raise TypeError

print(average(sales_dict))

Wynik TypeError z niestandardowym komunikatem o podaniu właściwego typu danych

Python dla programistów – poziom średniozaawansowany

try-except a raise

try-except

  • Zapobiega generowaniu błędów
  • Kontynuuje wykonywanie dalszego kodu

raise

  • Generuje błąd
  • Wstrzymuje wykonywanie dalszego kodu
Python dla programistów – poziom średniozaawansowany

Czas na ćwiczenia!

Python dla programistów – poziom średniozaawansowany

Preparing Video For Download...