CodeGym /Curso Java /Python SELF PT /Erros durante a execução do programa

Erros durante a execução do programa

Python SELF PT
Nível 17 , Lição 0
Disponível

1.1 Surgimento de Erro

Erros (e exceções) são parte essencial da programação. Eles surgem quando o programa se depara com situações imprevistas, que ele não consegue processar. Em Python existe um sistema de tratamento de exceções que permite capturar e tratar erros, evitando que o programa encerre.

Exceções geralmente surgem nas seguintes situações:

Erros de Sintaxe:

Esses erros são detectados na fase de compilação do código e estão relacionados com a gramática incorreta da linguagem Python. Por exemplo, falta de dois pontos ou palavras-chave incorretas.


if True:
    print("Hello")
        

Erros de Execução (Runtime Errors):

Esses erros ocorrem durante a execução do programa e podem ser causados por vários motivos, como divisão por zero, acesso a um índice inexistente na lista, uso incorreto de tipos de dados, etc.


print(1 / 0)  # ZeroDivisionError
        

Erros Lógicos:

Esses erros surgem quando o programa funciona sem falhas, mas gera um resultado incorreto devido a um erro na lógica do programa. Erros lógicos não geram exceções e são mais difíceis de depurar.

Erros lógicos geralmente são chamados de bugs — são como se fossem algumas falhas na funcionalidade do programa. Já os erros de execução são chamados de exceções. Para cada erro, o Python cria um objeto especial (exceção) e o "lança" no programa...

1.2 Caminho das Exceções

Quando uma exceção ocorre em Python, ela é elevada pela pilha de chamadas até ser tratada. A pilha de chamadas representa a sequência de chamadas de funções que levaram à ocorrência da exceção.

Mecanismo de Elevação de Exceções

  • Surgimento da Exceção: Quando ocorre um erro, o Python cria um objeto de exceção.
  • Busca pelo Tratador de Exceção: O interpretador Python começa a busca pelo tratador de exceção no bloco de código atual. Se o tratador não for encontrado, ele passa para o próximo bloco de código que chamou a função atual.
  • Elevação da Exceção pela Pilha: Este processo se repete até ser encontrado um tratador ou a pilha de chamadas ser esgotada.
  • Encerramento do Programa: Se nenhum tratador for encontrado, o programa encerra sua execução e imprime uma mensagem de erro.

Exemplo:


def func_a():
    func_b()
        
def func_b():
    func_c()
        
def func_c():
    print(1 / 0)  # Aqui ocorre a exceção ZeroDivisionError
        
func_a()
        

Neste exemplo, a exceção ZeroDivisionError ocorre na função func_c, e então é elevada pela pilha de chamadas até func_b e func_a. Se não for encontrado um tratador, o programa vai encerrar com um erro.

1.3 Leitura do Log

Quando o programa encerra por causa de uma exceção não tratada, o Python imprime o rastreamento da pilha (traceback), que ajuda os desenvolvedores a entender o que deu errado. O rastreamento da pilha contém informações sobre a sequência de chamadas de funções que levaram à ocorrência da exceção e pode ser analisado para depurar o programa.

Exemplo de traceback


Traceback (most recent call last):
    File "example.py", line 10, in 
        func_a()
File "example.py", line 2, in func_a
    func_b()
File "example.py", line 5, in func_b
    func_c()
File "example.py", line 8, in func_c
    print(1 / 0)
ZeroDivisionError: division by zero

Análise do Rastreamento da Pilha

  • Tipo de Exceção e Mensagem: No final do traceback, é indicado o tipo de exceção e a mensagem. No exemplo dado, é ZeroDivisionError: division by zero.
  • Sequência de Chamadas: O rastreamento da pilha mostra a sequência de chamadas de funções. No nosso exemplo, a falha ocorreu na linha print(1 / 0) na função func_c, que foi chamada a partir de func_b, que por sua vez foi chamada a partir de func_a.
  • Arquivos e Linhas de Código: Em cada linha do traceback, é indicado o arquivo e o número da linha onde ocorreu a chamada. Isso ajuda a localizar e corrigir rapidamente o erro no código.

Uso Prático do Rastreamento da Pilha

O rastreamento da pilha é uma ferramenta importante para depuração e análise de programas. Ele ajuda os desenvolvedores a entender a causa da falha e encontrar o local no código onde ela ocorreu. Aqui estão algumas dicas sobre como usar o rastreamento da pilha:

  1. Leia de baixo para cima: Comece a análise pela chamada mais baixa no traceback, pois é onde a exceção ocorreu.
  2. Verifique todas as chamadas: Examine todas as chamadas no traceback para entender o caminho pelo qual a exceção foi transmitida.
  3. Corrija o código: Use as informações do traceback para corrigir o código e prevenir erros semelhantes no futuro.

Você aprenderá mais sobre exceções nas próximas palestras.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION