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

Tratamento de Erros (Rise)

Olá, eu não sei se tinha aprendido o Rise ou não anteriormente, mas sinceramente não lembro nem dele e nem de ter usado.
Vendo o código:

if len(lista) > 4:
raise ValueError("A lista não pode possuir mais de 4 notas.")

não parece para mim um código muito Pythonico... parece ficar menos claro do que código Python mais usual.
Não consigo imaginar uma situação real (não hipotética) de uso para o Rise, em que ele se mostre "mais útil".

Você me ajuda a ver alguma forma de aplicação em uma situação real?

1 resposta

Ei! Tudo bem, Herley?

Excelente reflexão e uma dúvida muito comum, agradeço por compartilhar com a comunidade, pois pode haver outros(as) colegas com a mesma dúvida.

No dia a dia, nós usamos o raise para criar regras de negócio personalizadas, forçando o código a parar e avisar que algo deu muito errado antes que esse erro quebre o sistema lá na frente de forma silenciosa.

Para te ajudar a visualizar, imagine que você está construindo um script automatizado que lê um arquivo CSV diário com dados de clientes para aprovação de crédito. Uma das regras cruciais do banco é: a idade do cliente não pode ser negativa e nem maior que 120 anos.

Se você usar apenas um if e print(), o código exibe o aviso na tela, mas continua rodando e envia o dado corrompido para o modelo de Inteligência Artificial, gerando uma previsão errada.

def processar_idade_cliente(idade):
    if idade < 0 or idade > 120:
        # Forçamos o erro imediatamente para o pipeline parar aqui!
        raise ValueError(f"Idade inválida detectada: {idade}. O processo foi interrompido para evitar dados corrompidos.")
    
    # Se estiver tudo certo, o código continua
    print("Idade processada com sucesso.")

Por que isso é útil e "Pythônico"?

  1. Em aplicações reais, é melhor o código parar imediatamente e te dar um erro claro (ValueError) do que continuar rodando com dados errados.

  2. Quem for usar a sua função no futuro (ou até outra biblioteca) vai conseguir capturar esse erro específico usando um try/except e tratá-lo adequadamente (como salvar o erro em um arquivo de log ou enviar um alerta no Slack da equipe).

Espero que tenha dado para visualizar um pouquinho do uso do rise.

Bons estudos e até mais!

Conteúdo para complementar seus estudos
Esse conteúdo pode estar em inglês, para traduzi-lo utilize o tradutor automático do navegador ou clique com o botão direito do mouse sobre a página e selecione a opção Traduzir para o português.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado