Considere o seguinte trecho de código em Python, executado n...

Próximas questões
Com base no mesmo assunto
Q4071630 Programação
Considere o seguinte trecho de código em Python, executado na versão 3.12.3 da linguagem:
Imagem associada para resolução da questão
Fonte: dados do elaborador

Com base nas regras de tratamentos de exceção em Python, assinale a alternativa que apresenta CORRETAMENTE a saída produzida pela execução do código:
Alternativas

Comentários

Veja os comentários dos nossos alunos

Gabarito: A

Ao executar a operação x = 5 / 0, o Python gera uma exceção do tipo ZeroDivisionError.

O fluxo de tratamento de exceções ocorre da seguinte forma:

  1. O Python avalia os blocos except na ordem em que foram escritos.
  2. O primeiro bloco é except TypeError:. Como a exceção gerada é um ZeroDivisionError (e não TypeError), esse bloco é ignorado.
  3. O segundo bloco é except Exception:. Como Exception é a classe-pai generica da qual ZeroDivisionError herda, a exceção é capturada aqui. O programa executa print("002") e interrompe a busca por outros blocos except.
  4. Por ter sido capturada no segundo bloco, o terceiro bloco (except ZeroDivisionError:) nem chega a ser avaliado.
  5. O bloco finally: é sempre executado, independentemente de ter ocorrido erro ou de qual erro foi capturado. Portanto, ele executa print("004").

Dessa forma, as saídas produzidas são "002" e "004".

  • A ("002" e "004"): Correta. O erro é capturado pelo bloco genérico Exception primeiro e o bloco finally é executado ao final.
  • B ("001" e "003"): Incorreta. Não ocorre TypeError (001) e o bloco específico ZeroDivisionError (003) é ignorado por ter sido capturado antes pela classe genérica.
  • C ("003" e "004"): Incorreta. Embora o erro seja de divisão por zero, a ordem dos blocos faz com que Exception capture o erro antes que o código chegue na linha do ZeroDivisionError.
  • D ("001" e "002"): Incorreta. Não ocorre TypeError e o bloco finally (004) obrigatoriamente roda.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo