Pular para o conteúdo principal

Questão de TI - Ciência de Dados e Inteligência Artificial — Python (Conceitos Gerais e Códigos) — Avança SP 2025

TI - Ciência de Dados e Inteligência ArtificialPython (Conceitos Gerais e Códigos)
Código
qa699188
Banca
Avança SP
Órgão
UNITAU
Ano
2025
Cargo
Ana SS ( )

try:

result = data['valor'] / data['total']

return result 

except KeyError:

return None 

except ZeroDivisionError:

raise ValueError("Total não pode ser zero")

Analise o seguinte trecho de código Python:      Qual é a principal vantagem do tratamento de exceções implementado?
  1. AMelhora a performance do código
  2. BPermite tratamento específico para diferentes tipos de erros
  3. CReduz o consumo de memória
  4. DAumenta a velocidade de execução
  5. EFacilita a leitura e manutenção do código
Revelar gabarito e comentário

GabaritoB — Permite tratamento específico para diferentes tipos de erros

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Tratamento de exceções em Python

Gabarito: letra B. A principal vantagem do tratamento de exceções implementado no código é permitir o tratamento específico para diferentes tipos de erros, como demonstrado pelos blocos except KeyError e except ZeroDivisionError, que capturam e respondem de forma distinta a cada situação. Essa é a essência do mecanismo de exceções em Python: cada except pode ser direcionado a um tipo de erro, permitindo respostas personalizadas.

O tratamento de exceções é um mecanismo de controle de fluxo que permite ao programador lidar com erros em tempo de execução de forma estruturada, em vez de deixar o programa simplesmente encerrar com uma mensagem de erro. No código apresentado, temos uma função que tenta dividir data['valor'] por data['total']. Se a chave 'total' não existir no dicionário data, um KeyError é lançado e capturado pelo primeiro except, retornando None. Se data['total'] for zero, um ZeroDivisionError é lançado e capturado pelo segundo except, que relança um ValueError com uma mensagem mais clara. Essa estrutura demonstra a capacidade de tratar erros de forma granular.

A grande vantagem desse mecanismo é a especificidade: você pode ter múltiplos blocos except, cada um responsável por um tipo de erro, permitindo que o programa reaja de maneira adequada a cada situação. Isso torna o código mais robusto e previsível, pois o programador pode antecipar e planejar a resposta para cada tipo de falha. Por exemplo, no código, um KeyError resulta em um retorno silencioso (None), enquanto um ZeroDivisionError resulta em uma exceção mais informativa (ValueError). Essa diferenciação é impossível com um tratamento genérico.

É importante distinguir o tratamento de exceções de outras preocupações de programação. Ele não tem relação direta com performance, consumo de memória ou velocidade de execução — na verdade, o uso excessivo de exceções pode até degradar a performance. A legibilidade e a manutenção do código podem ser beneficiadas indiretamente, pois o tratamento de exceções organiza a lógica de erro, mas essa não é a principal vantagem destacada no código, que é a capacidade de tratar erros específicos de forma distinta.

A pegadinha desta questão está em confundir os benefícios secundários (legibilidade, robustez) com a vantagem central do mecanismo: o tratamento específico por tipo de erro. A banca explora exatamente essa confusão, oferecendo alternativas que são consequências indiretas, mas não a essência do recurso. Guarde isso: quando a pergunta for sobre a "principal vantagem" do tratamento de exceções, a resposta quase sempre será a capacidade de lidar com diferentes tipos de erros de forma personalizada.

1Vantagem central
Tratamento específico por tipo de erro
Ex.: except KeyError → retorna None
Ex.: except ZeroDivisionError → relança ValueError
2Não relacionado
Performance
Consumo de memória
Velocidade de execução
3Benefício secundário
Legibilidade
Manutenção
Tratamento de exceções
LEVELsoulevel.com.br
Tratamento de exceções: Vantagem central (Tratamento específico por tipo de erro, Ex.: except KeyError → retorna None, Ex.: except ZeroDivisionError → relança ValueError); Não relacionado (Performance, Consumo de memória, Velocidade de execução); Benefício secundário (Legibilidade, Manutenção)

Alternativa A — ❌ Incorreta

Afirma que o tratamento de exceções melhora a performance do código. Isso é falso: o tratamento de exceções, quando bem utilizado, não tem impacto positivo na performance e, em alguns casos, pode até adicionar overhead. A performance não é o objetivo do mecanismo, que visa a robustez e o controle de fluxo em situações de erro.

Alternativa B — ✅ Correta ⟵ GABARITO

Esta é a alternativa correta. O código demonstra exatamente isso: dois blocos except distintos, um para KeyError e outro para ZeroDivisionError, cada um com uma resposta específica. Essa é a principal vantagem do tratamento de exceções: permitir que o programador trate diferentes tipos de erros de maneiras diferentes, tornando o código mais adaptável e resiliente.

Alternativa C — ❌ Incorreta

Afirma que o tratamento de exceções reduz o consumo de memória. Não há relação entre o mecanismo de exceções e o consumo de memória. O consumo de memória é determinado pela estrutura de dados e pelo algoritmo, não pelo tratamento de erros.

Alternativa D — ❌ Incorreta

Afirma que o tratamento de exceções aumenta a velocidade de execução. Isso é incorreto. O tratamento de exceções não acelera a execução; na verdade, pode até adicionar uma pequena sobrecarga. A velocidade de execução depende do algoritmo e da implementação, não do mecanismo de tratamento de erros.

Alternativa E — ❌ Incorreta

Afirma que o tratamento de exceções facilita a leitura e manutenção do código. Embora seja verdade que um bom tratamento de exceções possa melhorar a organização do código, essa não é a principal vantagem destacada no código apresentado. A principal vantagem é a capacidade de tratar erros específicos de forma distinta, como evidenciado pelos dois blocos except com comportamentos diferentes. A legibilidade é um benefício secundário, não a essência do mecanismo.

Gabarito: letra B

Link permanente: /questoes/qa699188