ComeçarComece gratuitamente

Captura de exceções

Antes de começar a escrever suas próprias exceções personalizadas, vamos nos certificar de que você conhece os conceitos básicos de tratamento de exceções.

Neste exercício, você receberá uma função invert_at_index(x, ind) que recebe dois argumentos, uma lista x e um índice ind, e inverte o elemento da lista nesse índice. Por exemplo, invert_at_index([5,6,7], 1) retorna 1/6, ou 0.166666.

Tente executar o código como está e examine a saída no console. Há duas operações inseguras nessa função: primeiro, se o elemento que estivermos tentando inverter tiver o valor 0, o código causará uma exceção ZeroDivisionError. Segundo, se o índice passado para a função estiver fora do intervalo da lista, o código causará um IndexError. Em ambos os casos, o script será interrompido, o que pode não ser desejável.

Este exercício faz parte do curso

Programação orientada a objetos em Python

Ver Curso

Instruções de exercício

Use a try - except - except pattern (with two except blocks) inside the function to catch and handle two exceptions as follows:

  • try executar o código como está,
  • Se ocorrer ZeroDivisionError, imprima "Cannot divide by zero!",
  • Se ocorrer IndexError, imprima "Index out of range!"

Você saberá que acertou se o código for executado sem erros e a saída no console for:

0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None

Exercício interativo prático

Experimente este exercício preenchendo este código de exemplo.

# MODIFY the function to catch exceptions
def invert_at_index(x, ind):
    return 1/x[ind]
 
a = [5,6,0,7]

# Works okay
print(invert_at_index(a, 1))

# Potential ZeroDivisionError
print(invert_at_index(a, 2))

# Potential IndexError
print(invert_at_index(a, 5))
Editar e executar código