English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O Python (interpretador) gera exceções quando encontra erros. Por exemplo: divisão por zero. Neste artigo, você aprenderá sobre diferentes maneiras de lidar com exceções integradas ao Python.
Quando escrevemos programas, frequentemente nos deparamos com erros.
Erros causados por não seguir a estrutura correta da linguagem (sintaxe) são chamados de erros de sintaxe ou erros de análise.
>>> if a < 3 Arquivo "<input interativo>", linha 1 if a < 3 ^ SyntaxError: sintaxe inválida
Aqui podemos notar que falta um dois-pontos no comando if.
Erros também podem ocorrer durante a execução, esses são chamados de exceções. Por exemplo, quando tentamos abrir um arquivo que não existe (FileNotFoundError), dividir um número por zero (ZeroDivisionError), não encontrar o módulo que tentamos importar (ImportError) e outros, isso acontece.
Cada vez que ocorrer esse tipo de erro de tempo de execução, o Python criará um objeto de exceção. Se não for tratado corretamente, ele exibirá o rastreamento de erro para o erro e algumas informações detalhadas sobre a causa do erro.
>>> 1 / 0 Traceback (última chamada mais recente): Arquivo "<string>", linha 301, em runcode Arquivo "<input interativo>", linha 1, no módulo <module>. ZeroDivisionError: divisão por zero >>> open("imaginary.txt") Traceback (última chamada mais recente): Arquivo "<string>", linha 301, em runcode Arquivo "<input interativo>", linha 1, no módulo <module>. FileNotFoundError: [Errno 2Arquivo não encontrado ou diretório: 'imaginary.txt'
Operações ilegais podem gerar exceções. Existem muitos erros integrados no Python, que são gerados quando ocorrem os erros correspondentes. Podemos usar a função integrada local() para ver todas as exceções integradas, conforme mostrado a seguir.
>>> locals()['__builtins__']
Isso nos retornará um dicionário de exceções, funções e atributos integrados.
A seguir está listado alguns dos erros comuns de exceções integradas do Python e os erros que causam essas exceções.
Exceção | Razão do erro |
---|---|
AssertionError | Gerado quando uma declaração assert falha. |
AttributeError | Gerado quando a atribuição ou referência de atributo falha. |
EOFError | Gerado quando a função input() alcança a condição de fim de arquivo. |
FloatingPointError | Gerado quando uma operação de ponto flutuante falha. |
GeneratorExit | Gerado ao chamar o método close() em um gerador. |
ImportError | Gerado quando não é possível encontrar o módulo importado. |
IndexError | Gerado quando o índice da sequência está fora do escopo. |
KeyError | Gerado quando não é possível encontrar uma chave no dicionário. |
KeyboardInterrupt | Quando o usuário pressiona a tecla de interrupção (Ctrl + Gerado ao tentar aplicar c ou Delete. |
MemoryError | Gerado ao operar com falta de memória. |
NameError | Gerado quando não é possível encontrar uma variável em escopo local ou global. |
NotImplementedError | Método ainda não implementado. |
OSError | Gerada quando uma operação de sistema causa um erro relacionado ao sistema |
OverflowError | Gerada quando o resultado da operação aritmética é muito grande para ser representado |
ReferenceError | Gerada ao acessar um objeto de coleta de lixo usando um proxy de referência fraca |
RuntimeError | Gerada quando o erro não pertence a nenhuma outra categoria |
StopIteration | Gerada pela função next(), para indicar que o iterador não tem mais itens a retornar |
SyntaxError | Gerada pelo analisador quando há erro de sintaxe |
IndentationError | Gerada quando o recuo é incorreto |
TabError | Gerada quando o recuo é composto de tabs e espaços inconsistentes |
SystemError | Gerada quando o interpretador detecta um erro interno |
SystemExit | Gerada pela função sys.exit() |
TypeError | Gerada quando uma função ou operação é aplicada a um objeto de tipo incorreto |
UnboundLocalError | Gerada ao se referir a uma variável local em uma função ou método sem valor atribuído a ela |
UnicodeError | Gerada ao ocorrer um erro de codificação ou decodificação relacionado a Unicode |
UnicodeEncodeError | Gerada ao ocorrer um erro relacionado a Unicode durante a codificação |
UnicodeDecodeError | Gerada ao ocorrer um erro relacionado a Unicode durante a decodificação |
UnicodeTranslateError | Gerada ao ocorrer um erro relacionado a Unicode durante a tradução |
ValueError | Gerada quando a função obtém o tipo correto mas o valor não é correto |
ZeroDivisionError | Gerada quando o segundo operando da divisão ou do módulo é zero |
Também podemos definir nossas próprias exceções no Python (se necessário). Acesse esta página para saber mais sobredas exceções definidas pelo usuárioMais informações.
Podemos usar as instruções try, except e finallyTratar essas exceções integradas e definidas pelo usuário no Python.