Tratamento de erros

Python intermediário para desenvolvedores

Jasmin Ludolf

Senior Data Science Content Developer

Traceback do pandas

Traceback mostrando código que gera erro intencionalmente

  • except, raise

  • Tente prever como erros podem ocorrer

Python intermediário para desenvolvedores

Design thinking

  • Como as pessoas podem usar nossa função?
  • Teste abordagens diferentes
  • Descubra quais erros podem ocorrer

Diferentes tipos de deslocamento na cidade

Python intermediário para desenvolvedores

Tratando erros em funções personalizadas

def average(values):
    # Calcular a média
    average_value = sum(values) / len(values)
    return average_value
Python intermediário para desenvolvedores

Onde podem errar?

  • average() espera uma list ou set
  • Forneça mais de um argumento 🛑
  • Use o tipo de dado errado 🛑
Python intermediário para desenvolvedores

Onde podem errar?

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

Traceback com TypeError

Python intermediário para desenvolvedores

Tratamento de erros visto antes

  • Fluxo de controle if, elif, else
  • Docstrings
Python intermediário para desenvolvedores

try-except

def average(values):

try:
# Código que pode gerar erro average_value = sum(values) / len(values) return average_value
except:
# Código a executar se ocorrer erro print("average() aceita uma list ou set. Forneça o tipo de dado correto.")
Python intermediário para desenvolvedores

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 intermediário para desenvolvedores

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 intermediário para desenvolvedores

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 intermediário para desenvolvedores

saída de raise TypeError

print(average(sales_dict))

Saída de TypeError mostrando a mensagem personalizada para fornecer o tipo de dado correto

Python intermediário para desenvolvedores

try-except vs. raise

try-except

  • Evita que erros sejam gerados
  • Ainda executa o código seguinte

raise

  • Vai gerar um erro
  • Evita executar o código seguinte
Python intermediário para desenvolvedores

Vamos praticar!

Python intermediário para desenvolvedores

Preparing Video For Download...