Questão nº 25

Questão de Tecnologia da Informação · FCC TRT23 2022 (nº 25)

FCC2022Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Cver comentário ↓

Considere o programa abaixo que, completo, pode ser executado em condições ideais.

```
n1 = int(input("Insira n1: "))
n2 = int(input("Insira n2: "))

try:
divisao = n1 / n2
print(divisao)
except ZeroDivisionError as erro:
print("Insira valores válidos. Erro: ", erro)
I
print("Os dois valores são válidos para a divisão.")
finally:
print("Fim do programa")
```

É correto afirmar:

Resposta comentada

Gabarito Alternativa C

Em Python, o bloco try-except-else-finally é uma ferramenta essencial para lidar com erros (exceções) que podem surgir durante a execução de um programa. O código dentro do try é executado; se ocorrer um erro, o except correspondente é acionado. Se não houver erro, o else é executado. O finally é sempre executado, independentemente de ter ocorrido ou não um erro.

  • (A) Incorreta: O código está em Python, não em PHP. Em Python, usa-se except para capturar exceções, não catch:.
  • (B) Incorreta: Em Python, a palavra-chave para levantar (gerar) uma exceção é raise, não throw:. A lacuna I estaria em um contexto de tratamento de exceção, não de levantamento.
  • (C) Correta: Ao inserir n1 = 5 e n2 = 0, a operação n1 / n2 no bloco try gera um ZeroDivisionError. O bloco except ZeroDivisionError captura esse erro, imprime a mensagem "Insira valores válidos. Erro: division by zero". O código dentro da lacuna I (seja else ou outra coisa) não é executado porque uma exceção ocorreu e foi tratada. Finalmente, o bloco finally é executado, imprimindo "Fim do programa".
  • (D) Incorreta: A função int(input(...)) converte a entrada para um número inteiro. Se 6.4 fosse inserido, ocorreria um ValueError antes mesmo da divisão. Se n1 fosse 6 e n2 fosse 2, o resultado da divisão seria 3.0, não 3.2. Além disso, a linha "Os dois valores são válidos para a divisão." só seria impressa se a lacuna I fosse um bloco else: e nenhuma exceção ocorresse.
  • (E) Incorreta: (Armadilha da banca!) Se a lacuna I for preenchida com else:, e forem inseridos n1 = 0 e n2 = 10, a divisão 0 / 10 resulta em 0.0 e não gera um ZeroDivisionError. Como não há erro, o bloco except é ignorado. O programa imprimiria 0.0, em seguida a mensagem do bloco else ("Os dois valores são válidos para a divisão."), e por último a mensagem do finally ("Fim do programa"). A alternativa prevê a saída do bloco except, o que está errado.

Fonte: FCC TRT23 2022 Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho