Tratamento de Exceções

tratamento de exceções em Python permite capturar e resolver erros específicos sem encerrar o programa abruptamente. A estrutura básica para isso é feita com os blocos try, except, e finally.

Blocos try, except e finally
  • try: Contém o código que pode causar uma exceção.

  • except: Especifica o que fazer se ocorrer uma exceção. Podemos capturar exceções específicas (como ValueError) ou usar except sem especificar o erro para capturar todas as exceções.

  • finally: Este bloco é executado independentemente de uma exceção ter ocorrido ou não, útil para liberar recursos, como fechar arquivos ou conexões.

Exemplo: Programa que pede ao usuário para inserir um número até que ele insira corretamente.

Neste exemplo:

  • Se o usuário inserir algo que não seja um número, o bloco except capturará o erro ValueError.

  • O bloco finally será executado após cada tentativa, independentemente do sucesso ou falha.

Depuração e Logging

A depuração ajuda a identificar e corrigir erros no código, enquanto o logging permite registrar eventos e mensagens que ajudam a monitorar e entender o comportamento do programa.

Ferramentas de Depuração

Depuradores (como o do VS Code) permitem executar o código passo a passo, inspecionar variáveis, e verificar o fluxo de execução. São úteis para entender o estado interno do programa e encontrar a origem de erros.

Uso do Módulo logging

O módulo logging permite registrar mensagens sobre o estado do programa em diferentes níveis (como debug, info, warning, error, e critical). Isso facilita o monitoramento e a solução de problemas em produção.

Exemplo: Script que registra logs de erros em um arquivo.

Neste exemplo:

2024-10-31 12:30:25,123 - INFO - Divisão realizada com sucesso: 10 / 2 = 5.0

2024-10-31 12:30:25,124 - ERROR - Erro: Tentativa de divisão por zero

  • O código tenta dividir dois números e registra o resultado em um arquivo de log.

  • Se ocorrer uma divisão por zero, ele registra um erro em vez de encerrar o programa.

  • O arquivo monitoramento.log conterá entradas como: