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
trytenta converter o texto em um número inteiro. - Quando
int()falha, o blocoexcept ValueErroratribui 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
tryapertado 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
BaseExceptionou umExceptiongenérico, a menos que você faça reraise ou log com intenção.