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!