Reconhecer Exceções Comuns
Nesta etapa, exploraremos exceções comuns. Diferentemente dos erros de sintaxe, as exceções ocorrem durante a execução do programa. O código está sintaticamente correto, mas um erro acontece enquanto ele está rodando.
O arquivo common_exceptions.py está pronto para você no diretório ~/project.
Primeiro, vamos causar um ZeroDivisionError. Abra common_exceptions.py no editor e adicione o seguinte código:
numerator = 10
denominator = 0
result = numerator / denominator
print(result)
Salve o arquivo e execute-o a partir do terminal:
python common_exceptions.py
O programa começa a rodar, mas para e exibe um ZeroDivisionError. Matematicamente, a divisão por zero é indefinida, e Python levanta essa exceção para indicar o problema.
Traceback (most recent call last):
File "/home/labex/project/common_exceptions.py", line 3, in <module>
result = numerator / denominator
ZeroDivisionError: division by zero
Em seguida, vamos acionar um NameError. Isso acontece quando você tenta usar uma variável que ainda não foi definida. Substitua o conteúdo de common_exceptions.py pelo seguinte:
print(undefined_variable)
Salve o arquivo e execute-o:
python common_exceptions.py
Você obterá um NameError porque o interpretador não sabe a que undefined_variable se refere.
Traceback (most recent call last):
File "/home/labex/project/common_exceptions.py", line 1, in <module>
print(undefined_variable)
NameError: name 'undefined_variable' is not defined
Agora, vamos ver um TypeError. Isso ocorre quando você tenta realizar uma operação em um objeto de um tipo inadequado. Substitua o conteúdo de common_exceptions.py por este código:
print("Hello" + 5)
Salve e execute o script:
python common_exceptions.py
Você verá um TypeError. Python não permite que você some (+) uma string e um inteiro diretamente.
Traceback (most recent call last):
File "/home/labex/project/common_exceptions.py", line 1, in <module>
print("Hello" + 5)
TypeError: can only concatenate str (not "int") to str
Finalmente, vamos demonstrar um IndexError. Isso acontece quando você tenta acessar um elemento de uma sequência (como uma lista) usando um índice que está fora do intervalo válido. Substitua o conteúdo de common_exceptions.py pelo seguinte:
my_list = [1, 2, 3]
print(my_list[5])
Salve e execute o script:
python common_exceptions.py
Você obterá um IndexError. A lista my_list tem três itens, então seus índices válidos são 0, 1 e 2. Acessar o índice 5 não é possível.
Traceback (most recent call last):
File "/home/labex/project/common_exceptions.py", line 2, in <module>
print(my_list[5])
IndexError: list index out of range
Compreender essas exceções comuns é uma parte fundamental do aprendizado de depuração (debugging) de código Python.