Pular para o conteúdo principal

Questão de Programação — JavaScript — Quadrix 2025

ProgramaçãoJavaScript
Código
qg599034
Banca
Quadrix
Órgão
CRMV-GO
Ano
2025
Nível
Superior
Cargo
Analista Administrativo
A respeito da lógica de programação, das linguagens de programação Python e da ferramenta Node.js, julgue o item a seguir.No Node.js, ao utilizar async/await, uma função assíncrona que lança um erro deve ser, obrigatoriamente, envolvida em try/catch para evitar que a aplicação encerre inesperadamente.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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”.

Node.js: async/await e tratamento de erros

Gabarito: letra E (ERRADO). A afirmação de que uma função assíncrona que lança um erro deve ser, obrigatoriamente, envolvida em try/catch para evitar que a aplicação encerre inesperadamente é incorreta. O uso de try/catch é uma forma de tratar erros, mas não é a única nem obrigatória; é possível tratar rejeições de Promises com o método .catch(), e a decisão de como lidar com o erro depende do contexto da aplicação.

O Node.js é um ambiente de execução JavaScript baseado no interpretador V8 do Google, com arquitetura assíncrona e orientada a eventos. Uma função declarada com async sempre retorna uma Promise, e o await é usado para esperar a resolução dessa Promise. Quando uma função assíncrona lança um erro, a Promise é rejeitada. Para evitar que a aplicação encerre inesperadamente, é necessário tratar essa rejeição, mas existem múltiplas abordagens para isso.

A forma mais comum é usar try/catch dentro da função assíncrona, capturando o erro no bloco catch. No entanto, também é possível encadear um .catch() na Promise retornada pela função, como em minhaFuncaoAsync().catch(erro => console.error(erro)). Além disso, em Node.js, é possível registrar um manipulador global para rejeições não tratadas, como o evento process.on('unhandledRejection', ...). Portanto, a palavra "obrigatoriamente" torna a afirmação incorreta, pois o try/catch é apenas uma das opções disponíveis.

A pegadinha da banca está em usar o termo "obrigatoriamente", que sugere que não há alternativa ao try/catch. Na prática, o desenvolvedor pode escolher a estratégia de tratamento de erros mais adequada ao contexto, seja com try/catch, .catch(), ou até mesmo deixando o erro ser tratado por um manipulador global. O importante é que a rejeição seja tratada de alguma forma para evitar o encerramento inesperado da aplicação.

Guarde a distinção: try/catch é uma ferramenta para tratar erros, mas não é a única. A banca explora exatamente essa confusão entre "uma forma de tratar" e "a forma obrigatória de tratar".

1try/catch
Dentro da função assíncrona
2.catch() encadeado
Na Promise retornada
3Manipulador global
process.on('unhandledRejection')
Tratamento de erros em async/await
LEVELsoulevel.com.br
Tratamento de erros em async/await: try/catch (Dentro da função assíncrona); .catch() encadeado (Na Promise retornada); Manipulador global (process.on('unhandledRejection'))

Alternativa E — ❌ Incorreta ⟵ GABARITO

A afirmação está errada porque o uso de try/catch não é obrigatório. Uma função assíncrona que lança um erro pode ter sua Promise rejeitada tratada de outras maneiras, como com o método .catch() encadeado ou com um manipulador global de rejeições não tratadas. O termo "obrigatoriamente" é o ponto central do erro, pois exclui todas as outras abordagens válidas de tratamento de erros.

PEGA ESSA DICA!

Em questões sobre tratamento de erros em JavaScript/Node.js, desconfie de palavras como "obrigatoriamente", "sempre" ou "nunca". Elas geralmente indicam uma generalização indevida, pois a linguagem oferece múltiplas formas de lidar com erros.

Gabarito: letra E (ERRADO).

Link permanente: /questoes/qg599034