Python try exceto para tratamento controlado de erros

Python try except manipula erros de tempo de execução para que o programa possa continuar com um fallback. Use-o ao analisar a entrada do usuário ou a leitura de um arquivo pode falhar, mas o resto do trabalho ainda deve ser executado. A chave é agrupar apenas as linhas arriscadas, capturar a exceção esperada e fornecer um padrão seguro.

Python Try Except Exemplo para tratamento de erros

Saída:

A saída aparecerá aqui...

Saída:

0

Como este exemplo funciona

  • O bloco try tenta converter o texto em um número inteiro.
  • Quando int() falha, o bloco except ValueError atribui um valor de fallback.
  • O print é executado após o bloco, portanto o script sempre gera um número utilizável.
  • A saída mostra o caminho alternativo, o que prova que o erro foi tratado em vez de travar.

Erros comuns com Python tente exceto

Erro 1: Pegar tudo com um except simples.

try:
    total = int(text)
except:
    total = 0
try:
    total = int(text)
except ValueError:
    total = 0

Por que isso acontece: um except simples detecta erros de saída do sistema, como KeyboardInterrupt e SystemExit, tornando os programas mais difíceis de parar e depurar. Prefira a exceção específica que você espera.

Erro 2: Colocar muito código dentro do try e ocultar bugs não relacionados.

total = 10

try:
    count = int(text)
    ratio = total / count
except Exception:
    ratio = 0
total = 10

try:
    count = int(text)
except ValueError:
    ratio = 0
else:
    ratio = total / count

Por que isso acontece: manipuladores amplos podem mascarar erros de linhas que deveriam falhar ruidosamente. O bloco else é executado somente quando nenhuma exceção ocorre, para que bugs inesperados não sejam engolidos.

Erro 3: ordenar blocos except de amplos para específicos.

try:
    count = int(text)
except Exception:
    count = 0
except ValueError:
    count = 0
try:
    count = int(text)
except ValueError:
    count = 0
except Exception:
    count = 0

Por que isso acontece: o Python escolhe o primeiro manipulador correspondente, portanto, uma exceção ampla colocada primeiro torna o específico inacessível.

Considerações de desempenho

Um bloco try sem exceção é eficiente, mas gerar e capturar exceções é relativamente caro. Se forem esperadas falhas como parte do fluxo normal, uma simples pré-verificação (como a validação de entrada) pode ser mais rápida e clara. Quando as falhas são realmente excepcionais, try e except mantêm o caminho feliz legível sem um custo significativo de desempenho.

Quando usar, tente exceto

  • Use-o quando uma operação puder falhar e você tiver um substituto seguro (analisando texto, lendo um arquivo ou chamando uma API).
  • Use-o para manter o trabalho em lote em andamento, ignorando itens incorretos enquanto registra o erro que você tratou.
  • Mantenha o bloco try apertado para que apenas a linha de risco seja protegida e outros bugs ainda apareçam.
  • Evite quando a falha é o caminho normal e uma condição simples é mais barata e clara.
  • Evite pegar BaseException ou um Exception genérico, a menos que você faça reraise ou log com intenção.