Обработка ошибок

Средний уровень Python для разработчиков

Jasmin Ludolf

Senior Data Science Content Developer

Трассировка Pandas

Трассировка, показывающая код, намеренно вызывающий ошибку

  • except, raise

  • Учитывайте возможные источники ошибок

Средний уровень Python для разработчиков

Дизайн-мышление

  • Как пользователи могут применять нашу функцию?
  • Проверьте разные сценарии
  • Определите возможные ошибки

Различные типы передвижения по городу

Средний уровень Python для разработчиков

Обработка ошибок в пользовательских функциях

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

Где могут возникнуть ошибки?

  • average() ожидает список или множество
  • Передать более одного аргумента 🛑
  • Использовать неверный тип данных 🛑
Средний уровень 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
  • Строки документации
Средний уровень 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...