Capturando diferentes tipos de exceções em Python
No mesmo código, pode ser necessário capturar diferentes tipos de exceções.
Suponha que precisemos capturar uma exceção ao dividir por zero. Nesse tipo de erro, é lançada a exceção:
ZeroDivisionError: division by zero
Para capturá-la, o nome da exceção deve ser
especificado no bloco except:
try:
print(1 / 0)
except ZeroDivisionError:
print('erro: não divida por zero')
Suponha também que tenhamos uma lista:
lst = [1, 2, 3]
Se, no bloco try, houver código com outro
erro potencial, por exemplo, ao acessar
um elemento que não existe, a exceção
não capturada pelo bloco except será
propagada e exibida no console. Isso fará
com que a execução do código seja interrompida:
lst = [1, 2, 3]
try:
print(lst[4]) # lançará IndexError: list index out of range
except ZeroDivisionError:
print('erro: não divida por zero')
Para resolver essa situação, é necessário especificar o nome do tipo correspondente de exceção em cada bloco. Vamos adicionar ao nosso código a exceção para um elemento inexistente:
try:
print(lst[4])
except ZeroDivisionError:
print('erro: não divida por zero')
except IndexError:
print('erro: elemento não existe')
Dado o seguinte código:
txt = '2'
res1 = txt + 3
res2 = txt1
Escreva o código para capturar as exceções
apresentadas nas variáveis res1 e res2.