Neste tutorial, você aprenderá sobre diferentes tipos de erros e exceções que são integrados ao Python. Eles são gerados sempre que o interpretador Python encontra erros.
Vídeo: Manipulação de exceções Python
Podemos cometer certos erros ao escrever um programa que podem levar a erros quando tentamos executá-lo. Um programa python termina assim que encontra um erro não tratado. Esses erros podem ser amplamente classificados em duas classes:
- Erros de sintaxe
- Erros lógicos (exceções)
Erros de sintaxe Python
O erro causado por não seguir a estrutura adequada (sintaxe) da linguagem é denominado erro de sintaxe ou erro de análise .
Vejamos um exemplo:
>>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax
Conforme mostrado no exemplo, uma seta indica onde o analisador encontrou o erro de sintaxe.
Podemos notar aqui que :
falta dois pontos na if
declaração.
Erros lógicos Python (exceções)
Os erros que ocorrem no tempo de execução (após passar no teste de sintaxe) são chamados de exceções ou erros lógicos .
Por exemplo, ocorrem quando tentamos abrir um arquivo (para leitura) que não existe ( FileNotFoundError
), tentamos dividir um número por zero ( ZeroDivisionError
), ou tentamos importar um módulo que não existe ( ImportError
).
Sempre que esses tipos de erros de tempo de execução ocorrem, o Python cria um objeto de exceção. Se não for tratado corretamente, ele imprime um rastreamento desse erro junto com alguns detalhes sobre por que o erro ocorreu.
Vejamos como o Python trata esses erros:
>>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'
Exceções integradas ao Python
Operações ilegais podem gerar exceções. Existem muitas exceções integradas em Python que são levantadas quando ocorrem erros correspondentes. Podemos visualizar todas as exceções integradas usando a local()
função integrada da seguinte maneira:
print(dir(locals()('__builtins__')))
locals()('__builtins__')
retornará um módulo de exceções, funções e atributos integrados. dir
nos permite listar esses atributos como strings.
Algumas das exceções integradas comuns na programação Python, juntamente com o erro que as causa, estão listadas abaixo:
Exceção | Causa do erro |
---|---|
AssertionError | Gerado quando uma assert instrução falha. |
AttributeError | Gerado quando a atribuição de atributo ou referência falha. |
EOFError | Gerado quando a input() função atinge a condição de fim de arquivo. |
FloatingPointError | Gerado quando uma operação de ponto flutuante falha. |
GeneratorExit | Aumenta quando o close() método de um gerador é chamado. |
ImportError | Gerado quando o módulo importado não é encontrado. |
IndexError | Gerado quando o índice de uma sequência está fora do intervalo. |
KeyError | Gerado quando uma chave não é encontrada no dicionário. |
KeyboardInterrupt | Gerado quando o usuário pressiona a tecla de interrupção ( Ctrl+C ou Delete ). |
MemoryError | Gerado quando uma operação fica sem memória. |
NameError | Gerado quando uma variável não é encontrada no escopo local ou global. |
NotImplementedError | Gerado por métodos abstratos. |
OSError | Gerado quando a operação do sistema causa erro relacionado ao sistema. |
OverflowError | Gerado quando o resultado de uma operação aritmética é muito grande para ser representado. |
ReferenceError | Gerado quando um proxy de referência fraco é usado para acessar um referente da coleta de lixo. |
RuntimeError | Gerado quando um erro não se enquadra em nenhuma outra categoria. |
StopIteration | Gerado pela next() função para indicar que não há mais nenhum item a ser retornado pelo iterador. |
SyntaxError | Gerado pelo analisador quando um erro de sintaxe é encontrado. |
IndentationError | Gerado quando há indentação incorreta. |
TabError | Gerado quando o recuo consiste em tabulações e espaços inconsistentes. |
SystemError | Gerado quando o intérprete detecta um erro interno. |
SystemExit | Gerado por sys.exit() função. |
TypeError | Gerado quando uma função ou operação é aplicada a um objeto de tipo incorreto. |
UnboundLocalError | Gerado quando uma referência é feita a uma variável local em uma função ou método, mas nenhum valor foi vinculado a essa variável. |
UnicodeError | Gerado quando ocorre um erro de codificação ou decodificação relacionado ao Unicode. |
UnicodeEncodeError | Gerado quando um erro relacionado ao Unicode ocorre durante a codificação. |
UnicodeDecodeError | Gerado quando ocorre um erro relacionado ao Unicode durante a decodificação. |
UnicodeTranslateError | Gerado quando um erro relacionado ao Unicode ocorre durante a tradução. |
ValueError | Gerado quando uma função obtém um argumento do tipo correto, mas valor impróprio. |
ZeroDivisionError | Gerado quando o segundo operando de divisão ou operação de módulo é zero. |
Se necessário, também podemos definir nossas próprias exceções em Python. Para saber mais sobre eles, visite Exceções definidas pelo usuário do Python.
Podemos lidar com essas exceções embutidos e user-definidas em Python usando try
, except
e finally
declarações. Para saber mais sobre eles, visite as instruções do Python try, except e finally.