Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

Dominando Erros e Exceções Built-in do Python

Erros e Exceções Built-in do Python

Descubra como o Python sinaliza problemas, a diferença entre erros de sintaxe e runtime, e como lidar com exceções built-in com confiança.

Vídeo: Tratamento de Exceções em Python

Quando você executa um programa Python, o interpretador para a execução imediatamente se encontrar um erro não tratado. Esses erros se enquadram em duas categorias amplas:

  1. Erros de sintaxe — problemas detectados durante o parsing.
  2. Erros lógicos (exceções) — problemas que surgem durante a execução do código.

Erros de Sintaxe em Python

Erro de sintaxe ocorre quando código-fonte viola regras gramaticais do Python. O interpretador aponta localização exata com caret (^) na mensagem de erro.

> >>> if a < 3
File "<interactive input>", line 1
if a < 3
^
SyntaxError: invalid syntax

Neste exemplo, a falta de dois-pontos (:) após o statement if dispara SyntaxError.


Erros Lógicos (Exceções) em Python

Erros lógicos, ou exceções, surgem apenas após o código passar na verificação de sintaxe. Exemplos comuns incluem:

Quando exceção é levantada, Python cria objeto de exceção. Se não tratada, um traceback é impresso, mostrando call stack e razão da falha.

> >>> 1 / 0
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
ZeroDivisionError: division by zero
> >>> open("imaginary.txt")
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'imaginary.txt'

Exceções Built-in do Python

O interpretador Python levanta uma ampla gama de exceções built-in para sinalizar diferentes condições de falha. Você pode listá-las com:

print(dir(locals()['__builtins__']))

Abaixo referência concisa para algumas das exceções built-in mais frequentes e situações que as disparam:

ExceçãoCausa do Erro
AssertionErrorLevantada quando statement assert falha.
AttributeErrorLevantada quando atribuição ou referência de atributo falha.
EOFErrorLevantada quando função input() atinge condição end-of-file.
FloatingPointErrorLevantada quando operação de ponto flutuante falha.
GeneratorExitLevantada quando método close() de generator é chamado.
ImportErrorLevantada quando módulo importado não pode ser encontrado.
IndexErrorLevantada quando índice de sequência está fora do intervalo.
KeyErrorLevantada quando chave está ausente de dicionário.
KeyboardInterruptLevantada quando usuário pressiona Ctrl+C ou Delete.
MemoryErrorLevantada quando operação excede memória disponível.
NameErrorLevantada quando variável não encontrada em escopo local ou global.
NotImplementedErrorLevantada por métodos abstratos sem implementação.
OSErrorLevantada para erros relacionados a sistema (ex.: I/O de arquivo).
OverflowErrorLevantada quando resultado aritmético é grande demais para representar.
ReferenceErrorLevantada quando weak reference proxy para objeto garbage-collected.
RuntimeErrorLevantada para erros que não se encaixam em outras categorias.
StopIterationLevantada por next() quando iterador esgota.
SyntaxErrorLevantada quando parser encontra sintaxe inválida.
IndentationErrorLevantada quando indentação incorreta.
TabErrorLevantada quando indentação mistura tabs e espaços inconsistente.
SystemErrorLevantada quando interpretador detecta erro interno.
SystemExitLevantada por sys.exit().
TypeErrorLevantada quando operação/função recebe objeto de tipo inapropriado.
UnboundLocalErrorLevantada quando variável local referenciada antes de atribuição.
UnicodeErrorLevantada para erros de encoding/decoding Unicode.
UnicodeEncodeErrorLevantada durante erros de encoding Unicode.
UnicodeDecodeErrorLevantada durante erros de decoding Unicode.
UnicodeTranslateErrorLevantada durante erros de tradução Unicode.
ValueErrorLevantada quando função recebe argumento de tipo correto mas valor inapropriado.
ZeroDivisionErrorLevantada ao dividir ou módulo por zero.

Se precisar controle mais granular, Python permite definir classes de exceção customizadas. Veja Python User-defined Exceptions para detalhes.

Tratar exceções é direto com blocos try, except e finally. Para aprofundamento, consulte Python try, except and finally statements.

python

  1. Palavras-chave e Identificadores em Python: Dominando Palavras Reservadas e Convenções de Nomenclatura
  2. Declarações, Indentação e Comentários em Python: Guia Claro
  3. Variáveis, Constantes e Literais em Python – Guia Completo
  4. Dominando Conversão e Casting de Tipos em Python: Guia Completo
  5. Dominando I/O e Importação de Módulos em Python: Guia Prático
  6. Entendendo Variáveis Globais, Locais e Nonlocal em Python
  7. Dominando Números, Conversão de Tipos e Matemática em Python
  8. Dominando Operações com Diretórios e Arquivos em Python
  9. Dominando Exceções Customizadas em Python: Guia Prático
  10. Obter Data e Hora Atuais em Python: Guia Prático