Como Verificar se uma Exceção foi Levantada em Python

PythonBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se uma exceção foi levantada em Python. O laboratório se concentra na compreensão de exceções e no uso de blocos try-except para capturá-las e tratá-las, evitando que o programa trave.

Você começará criando um script Python que levanta uma exceção ZeroDivisionError. Em seguida, você aprenderá como usar um bloco try-except para capturar essa exceção e tratá-la de forma elegante, permitindo que seu programa continue a ser executado.

Entendendo as Exceções

Nesta etapa, você aprenderá sobre exceções em Python. Exceções são eventos que ocorrem durante a execução de um programa e que interrompem o fluxo normal de instruções. Compreender as exceções é crucial para escrever código Python robusto e confiável.

Quando um erro ocorre em Python, uma exceção é levantada. Se a exceção não for tratada, o programa será encerrado e exibirá uma mensagem de erro. No entanto, usando blocos try-except, você pode capturar e tratar exceções, impedindo que seu programa trave.

Vamos começar com um exemplo simples que levanta uma exceção:

  1. Abra o editor VS Code no ambiente LabEx.

  2. Crie um novo arquivo chamado division.py no diretório ~/project.

    ~/project/division.py
    
  3. Adicione o seguinte código ao arquivo division.py:

    numerator = 10
    denominator = 0
    result = numerator / denominator
    print(result)
    

    Este código tenta dividir 10 por 0, o que é uma operação inválida e levantará uma exceção ZeroDivisionError.

  4. Execute o script usando o seguinte comando no terminal:

    python division.py
    

    Você verá uma saída semelhante a esta:

    Traceback (most recent call last):
      File "/home/labex/project/division.py", line 3, in <module>
        result = numerator / denominator
    ZeroDivisionError: division by zero
    

    O traceback mostra que um ZeroDivisionError ocorreu na linha 3 do arquivo division.py. O programa foi encerrado porque a exceção não foi tratada.

Agora, vamos ver como tratar essa exceção usando um bloco try-except.

Usando try-except para Capturar

Nesta etapa, você aprenderá como usar blocos try-except para capturar e tratar exceções em Python. Isso permite que seu programa continue a ser executado mesmo quando ocorrem erros.

A estrutura básica de um bloco try-except é a seguinte:

try:
    ## Código que pode levantar uma exceção
except ExceptionType:
    ## Código para tratar a exceção

O código dentro do bloco try é executado. Se uma exceção do tipo ExceptionType ocorrer, o código dentro do bloco except é executado. Se nenhuma exceção ocorrer, o bloco except é ignorado.

Vamos modificar o arquivo division.py da etapa anterior para tratar a exceção ZeroDivisionError:

  1. Abra o arquivo division.py no editor VS Code.

  2. Modifique o código para incluir um bloco try-except:

    try:
        numerator = 10
        denominator = 0
        result = numerator / denominator
        print(result)
    except ZeroDivisionError:
        print("Error: Cannot divide by zero.")
    

    Neste código, o bloco try contém a operação de divisão que pode levantar um ZeroDivisionError. O bloco except captura o ZeroDivisionError e imprime uma mensagem de erro.

  3. Execute o script usando o seguinte comando no terminal:

    python division.py
    

    Você verá a seguinte saída:

    Error: Cannot divide by zero.
    

    Em vez de travar, o programa agora trata o ZeroDivisionError de forma elegante e imprime uma mensagem informativa.

Isso demonstra como os blocos try-except podem ser usados para impedir que seu programa trave devido a exceções.

Inspecionando o Tipo de Exceção

Nesta etapa, você aprenderá como inspecionar o tipo de exceção e acessar a mensagem da exceção dentro do bloco except. Isso permite que você trate diferentes tipos de exceções de maneiras diferentes e forneça mensagens de erro mais informativas.

Quando uma exceção é capturada, você pode atribuí-la a uma variável na cláusula except usando a palavra-chave as:

try:
    ## Código que pode levantar uma exceção
except ExceptionType as e:
    ## Código para tratar a exceção
    ## 'e' é o objeto de exceção

A variável e conterá então o objeto de exceção, que você pode usar para acessar informações sobre a exceção, como seu tipo e mensagem.

Vamos modificar o arquivo division.py para inspecionar o tipo de exceção e imprimir a mensagem da exceção:

  1. Abra o arquivo division.py no editor VS Code.

  2. Modifique o código para inspecionar o tipo de exceção e imprimir a mensagem:

    try:
        numerator = 10
        denominator = 0
        result = numerator / denominator
        print(result)
    except ZeroDivisionError as e:
        print(f"Error: {type(e).__name__} - {e}")
    

    Neste código, capturamos o ZeroDivisionError e o atribuímos à variável e. Em seguida, usamos type(e).__name__ para obter o nome do tipo de exceção e e para obter a mensagem da exceção. Imprimimos ambos em uma string formatada.

  3. Execute o script usando o seguinte comando no terminal:

    python division.py
    

    Você verá a seguinte saída:

    Error: ZeroDivisionError - division by zero
    

    A saída agora inclui o tipo de exceção (ZeroDivisionError) e a mensagem da exceção (division by zero).

Isso permite que você forneça informações mais detalhadas sobre o erro que ocorreu, tornando mais fácil depurar seu código. Você também pode usar essas informações para tratar diferentes tipos de exceções de maneiras diferentes, fornecendo tratamento de erros mais específico para cada caso.

Resumo

Neste laboratório, você aprendeu sobre exceções em Python, que são eventos que interrompem o fluxo normal de um programa. Quando um erro ocorre, uma exceção é levantada e, se não for tratada, o programa é encerrado.

Você também aprendeu como usar blocos try-except para capturar e tratar exceções, evitando que o programa trave. O laboratório demonstrou um ZeroDivisionError e como usar try-except para tratá-lo.