Python: Capturando Exceções

PythonBeginner
Pratique Agora

Introdução

Nas profundezas enigmáticas da Floresta Sussurrante, sob o manto prateado de uma noite enluarada, corria um rumor entre os aprendizes de feiticeiros: um Mentor da Alma da Floresta Mágica havia aparecido. Dizia-se que este guia elusivo possuía o conhecimento de Python, a linguagem serpentina que podia controlar a própria estrutura do código. Encontrar o Mentor era aprender as artes antigas de capturar exceções — uma forma de encantar o próprio código para lidar com os feitiços imprevisíveis de erro sem quebrar a magia em si.

Uma noite, você se encontra diante de um carvalho antigo, suas folhas brilhando com um brilho etéreo. É aqui, no coração da floresta, que você aprenderá os segredos do Mentor. Seu objetivo é dominar a arte arcana de capturar exceções em Python, garantindo que suas incantações permaneçam intactas, mesmo quando o inesperado ocorrer.

Identificando Maldições Potenciais

Nesta etapa, você aprenderá a identificar os pontos potenciais onde maldições (erros) podem ocorrer em suas incantações Python (código). Vamos começar criando um feitiço simples que às vezes pode dar errado. Criaremos um script de mistura de poções que tentará dividir poções em frascos menores, mas, como qualquer feiticeiro sábio sabe, nunca se deve dividir por zero.

Abra um arquivo chamado potion_dividing.py dentro de ~/project e adicione o seguinte código:

def divide_potions(total_potions, vial_count):
    return total_potions / vial_count

## Attempt to divide 10 potions into 2 vials
print(divide_potions(10, 2))

Execute seu código no terminal usando o comando:

python ~/project/potion_dividing.py

Você deve ver a saída:

5.0

Isso indica a divisão bem-sucedida das poções.

Agora, modifique o script potion_dividing.py para incluir um caso de feitiço arriscado.

print(divide_potions(10, 0))  ## This incantation is dangerous and should be handled!

Você deve ver a saída:

Traceback (most recent call last):
  File "/home/labex/project/potion_dividing.py", line 6, in <module>
    print(divide_potions(10, 0))
  File "/home/labex/project/potion_dividing.py", line 2, in divide_potions
    return total_potions / vial_count
ZeroDivisionError: division by zero

A execução do script aprimorado mostrará a exceção amaldiçoada que você precisa capturar. Neste laboratório, aprenderemos a lidar com esses casos com elegância.

Criando um Feitiço de Proteção

Tendo experimentado a maldição da divisão por zero, é hora de criar um feitiço de proteção usando as cláusulas try e except. Atualize o script potion_dividing.py para incluir uma salvaguarda contra tais resultados calamitosos.

def divide_potions(total_potions, vial_count):
    try:
        return total_potions / vial_count
    except ZeroDivisionError:
        return "A sorcerer never divides by zero!"

## Attempt to divide potions safely
print(divide_potions(10, 2))
print(divide_potions(10, 0))  ## This should no longer cause a curse

Execute o script aprimorado novamente em seu terminal usando:

python ~/project/potion_dividing.py

Seu código agora deve lidar com a exceção com elegância e, em vez de um erro, imprimirá uma mensagem de aviso:

5.0
A sorcerer never divides by zero!

Resumo

Neste laboratório, percorremos os reinos sombrios das exceções Python em um cenário de floresta mágica. Exploramos como identificar erros potenciais e como conjurar feitiços de proteção (blocos try/except) para proteger nosso código contra calamidades inesperadas, sem interromper o fluxo da incantação.

Ao final de nossa jornada, não apenas encontramos o ZeroDivisionError, mas também dominamos a técnica para evitar seu caos, tornando nosso código mais robusto e menos propenso a interrupções pelas forças do caos.

Ao continuar suas aventuras em codificação, lembre-se das palavras do Mentor da Alma da Floresta Mágica: "Um feiticeiro sábio sempre espera o inesperado e protege o feitiço com uma cláusula de proteção."