Questão de Programação — JavaScript — Quadrix 2025
- Código
- qg599034
- Banca
- Quadrix
- Órgão
- CRMV-GO
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista Administrativo
- CCerto
- EErrado
GabaritoE — Errado
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".
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.
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