Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

O que apreendemos

Erro de Sintaxe (SyntaxError): É quando você digita algo que o Python não entende.

ZeroDivisionError: Tentar dividir um número por zero.

ValueError: Quando você espera um tipo de dado, mas recebe outro (ex: tentar transformar a palavra "abacaxi" em um número inteiro).

TypeError: Tentar somar um texto (str) com um número (int).

try: "Tente rodar isso".

except: "Se der o erro X, faça isso para não quebrar o programa".

else: "Se não deu erro nenhum, execute isso aqui".

finally: "Aconteça o que acontecer, termine fazendo isso".

Raize - Forçamos o Python a gerar um erro de valor, como se num campo idade for colocada como sendo negativa, nesse caso damos um aviso ao operador que a idade não pode ser negativa

1 resposta

Olá, Marcelo. Como vai?

Muito legal a sua iniciativa de compartilhar o seu resumo de estudos aqui com a comunidade! Fazer essas anotações e explicar os conceitos com as suas próprias palavras (como você fez brilhantemente com a estrutura do bloco try/except) é uma das melhores técnicas para consolidar o aprendizado na programação.

O seu entendimento sobre os principais tipos de erros e como tratá-los está perfeito. Gostaria apenas de pontuar um pequeno detalhe de digitação no seu último tópico, para que as suas anotações fiquem 100% corretas: a palavra reservada em Python para lançar ou forçar uma exceção se escreve com "s", ou seja, raise.

Para agregar ainda mais valor ao seu excelente material, criei um pequeno exemplo prático unindo todos esses conceitos. Veja como o seu exemplo da idade negativa funcionaria no código utilizando o raise em conjunto com o bloco try-except:

def cadastrar_idade(idade):
    # Aqui utilizamos o raise para criar a nossa própria regra de erro
    if idade < 0:
        raise ValueError("A idade não pode ser um número negativo!")
    
    print(f"Idade {idade} cadastrada com sucesso.")

# Testando o nosso código
try:
    print("Tentando cadastrar a idade de -5 anos...")
    cadastrar_idade(-5)
except ValueError as erro:
    # Se o erro for gerado, o except captura e mostra a mensagem amigável
    print(f"Aviso ao operador: {erro}")
finally:
    print("Processo de cadastro finalizado.")

Nesse script, conseguimos ver exatamente o comportamento que você descreveu: o raise gera o alerta de valor inválido, o except impede que o programa quebre mostrando a mensagem para o operador, e o finally encerra a rotina independentemente do que aconteceu.

Continue com esse ótimo hábito de documentar o que você aprende, pois isso ajuda muito não só você, mas todos os colegas do fórum.

Espero que possa ter lhe ajudado!