Este blog é um complemento do nosso canal no YouTube. Clique em @CanalQb para seguir e acompanhar nossos vídeos!

Sugestões de pesquisas

Como identificar a linha de erro em Python

#Python; #Debugging; #Programacao

Como identificar a linha de erro em Python

Durante o desenvolvimento de scripts em Python, é comum deparar-se com mensagens de erro que não explicam claramente onde exatamente o problema ocorreu. Felizmente, a linguagem Python oferece mecanismos internos para capturar e identificar a linha exata que causou a falha.

Capturando erros com try/except e sys.exc_info()

Você pode utilizar um bloco try/except em conjunto com o módulo sys para exibir a linha em que a exceção ocorreu. Veja abaixo um exemplo prático:

try:
    # seu código aqui
except Exception as e:
    import sys
    print("Erro na linha {0}: {1}".format(sys.exc_info()[-1].tb_lineno, e))
    pass

Explicando o funcionamento:

  • try: tenta executar o bloco de código onde o erro pode ocorrer;
  • except Exception as e: captura a exceção gerada e armazena a mensagem de erro em e;
  • sys.exc_info(): retorna informações detalhadas da exceção em execução, incluindo o traceback completo;
  • [-1].tb_lineno: acessa o número da linha onde a exceção foi lançada;
  • pass: impede que o script pare após o erro, permitindo a continuidade da execução.

Exemplo prático com erro proposital

Vamos testar esse mecanismo com um erro proposital para ver como ele funciona:

try:
    x = 10 / 0
except Exception as e:
    import sys
    print("Erro na linha {0}: {1}".format(sys.exc_info()[-1].tb_lineno, e))
    pass

A execução resultará em uma mensagem semelhante a esta:

Erro na linha 2: division by zero

Isso indica claramente que o erro ocorreu na linha 2 do bloco try e que foi causado por uma divisão por zero.

Por que usar pass?

A instrução pass é útil quando você deseja que o programa continue rodando mesmo após detectar e relatar um erro. No entanto, é importante lembrar que pass apenas ignora o erro. Em casos críticos, o mais indicado é registrar o erro em logs e tomar medidas apropriadas, como reiniciar funções ou alertar o usuário.

Quando usar essa técnica?

Essa abordagem é recomendada em situações como:

  • Depuração em ambientes de testes;
  • Execução de automações que não devem parar por pequenos erros;
  • Detecção de bugs em scripts longos, onde o rastreamento manual seria demorado;
  • Monitoramento contínuo de tarefas ou aplicações em produção.

Alternativas mais robustas

Para aplicações maiores, é recomendável utilizar bibliotecas como logging do Python, que oferece funcionalidades de registro de erros e exceções em arquivos, com níveis de severidade como info, warning, error e critical.

Outra alternativa interessante é o uso de ferramentas externas como Sentry, que permite capturar erros em tempo real, armazenando dados sobre o ambiente, variáveis e comportamento do usuário no momento da falha.

Conclusão

Saber identificar com precisão a linha que causou um erro em Python é uma habilidade valiosa para todo programador. Utilizar sys.exc_info() em conjunto com try/except proporciona uma forma simples e eficaz de diagnosticar falhas em tempo de execução. Para aplicações maiores ou em produção, considere investir em soluções de logging estruturado e monitoramento contínuo de erros.

Postar um comentário

Comente só assim vamos crescer juntos!
CanalQb mais próximo Quer falar com o CanalQb?
Em que posso te ajudar?
Fale comigo