Обробка помилок

Середній рівень Python для розробників

Jasmin Ludolf

Senior Data Science Content Developer

Трасування в pandas

Трасування, що показує код, який навмисно повертає помилку

  • except, raise

  • Намагайтесь передбачити, як можуть виникати помилки

Середній рівень Python для розробників

Design-thinking

  • Як люди можуть використовувати нашу користувацьку функцію?
  • Перевірте різні підходи
  • Знайдіть, які помилки можливі

Різні способи добирання містом

Середній рівень Python для розробників

Обробка помилок у користувацьких функціях

def average(values):
    # Calculate the average
    average_value = sum(values) / len(values)
    return average_value
Середній рівень Python для розробників

Де вони можуть помилитися?

  • average() очікує list або set
  • Передано більше ніж один аргумент 🛑
  • Використано неправильний тип даних 🛑
Середній рівень Python для розробників

Де вони можуть помилитися?

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

Трасування з TypeError

Середній рівень Python для розробників

Попередня обробка помилок

  • Керування потоком: if, elif, else
  • Рядки документації (docstrings)
Середній рівень Python для розробників

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 для розробників

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 для розробників

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 для розробників

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 для розробників

Вивід raise TypeError

print(average(sales_dict))

Вивід TypeError з нашим повідомленням про коректний тип даних

Середній рівень Python для розробників

try-except vs. raise

try-except

  • Уникає появи помилок
  • Дозволяє виконати подальший код

raise

  • Навмисно породжує помилку
  • Блокує виконання подальшого коду
Середній рівень Python для розробників

Давайте потренуємось!

Середній рівень Python для розробників

Preparing Video For Download...