3
respostas

Uso Else

A mesma dúvida do tópico aberto. Mesmo que eu não queira printar quando o aluno não estiver cadastrado, no momento que o compilador pegar o erro ele já não cai para o Except? por exemplo:

1 try:
2   nome = input("Digite o nome do(a) estudante: ")
3    resultado = notas[nome]
4    print(resultado)
5 except KeyError:
6   print("Estudante não matriculado(a) na turma")

Nesse caso ao dar o erro na linha 3, o compilador já não cai no Except sendo assim não rodando o código da linha 4?

3 respostas

Oi, Gustavo, tudo bem?

Sim, ao ocorrer um erro na linha 3, o compilador cai diretamente no bloco except. Isso acontece porque, no Python, quando uma exceção é levantada (no seu caso, um KeyError), o interpretador interrompe a execução do bloco try e passa diretamente para o bloco except correspondente. No exemplo que você trouxe, se notas[nome] lançar um KeyError, o interpretador interrompe a execução do bloco try imediatamente, sem executar a linha print(resultado). Em seguida, ele executa o bloco except KeyError:.

Espero ter ajudado. Caso tenha dúvidas, não hesite em postar no fórum!

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Certo! e a partir disso, qual seria a função do else? para mim não tem necessidade dele

Oi, Gustavo,

Desculpe a demora em te responder!

Na forma como você escreveu o código em sua postagem original, o else não tem necessidade de ser utilizado. Contudo caso estejamos numa situação como apresentada abaixo:

try:
    nome = input("Digite o nome do(a) estudante: ")
    resultado = notas[nome]
except KeyError:
    print("Estudante não matriculado(a) na turma")
else:
    print(resultado)

O else pegará o caso contrário. Ou seja, se não tiver uma exceção, seguimos o fluxo do try e ao concluí-lo com sucesso saltamos para o else, onde teremos a devolutiva da resposta do try.

Espero ter ajudado. Caso tenha dúvidas, não hesite em postar no fórum!

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!