ANÚNCIO

~/questoes/programacao

Onde deve ser colocado o tratador de erros global em relação a app.use(routes)?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Correção do app.js. Ordem correta de chamada do app.use(routes) #nodejs #js #api #rest #dev
Para fixar

Posicionamento do Tratador de Erros Global no Express

Conceito central

Em aplicações Express, a ordem das middlewares e rotas é crítica para o funcionamento correto. O tratador de erros global deve ser posicionado após app.use(routes) para capturar todos os erros lançados pelas rotas durante a execução, respeitando o fluxo sequencial de processamento do Express.

Por que essa resposta faz sentido

O tratador de erros deve ficar depois de app.use(routes) porque o Express processa requisições de cima para baixo. Se o tratador estiver antes das rotas, ele nunca será alcançado pelos erros que ocorrem nelas. Posicionando-o depois, garante-se que erros lançados durante a execução das rotas sejam capturados e tratados adequadamente.

Armadilhas comuns

  • Colocar o tratador de erros antes das rotas, imaginando que vai capturar todos os erros da aplicação
  • Não entender que o Express processa middlewares e rotas de forma sequencial de cima para baixo
  • Misturar o tratador de erros com outras middlewares globais, perdendo a clareza sobre quando ele será executado

Entenda as alternativas

A

Colocar o tratador antes de app.use(routes) não funciona porque o Express segue uma sequência linear. Erros lançados nas rotas ocorrem depois que o Express passa pelo tratador, tornando impossível capturá-los nessa posição.

B

Esta é a ordem correta. Posicionar o tratador após app.use(routes) garante que todos os erros lançados pelas rotas sejam capturados. O fluxo sequencial do Express faz com que as requisições passem pelas rotas primeiro e, se houver erro, caiam no tratador no final.

C

Embora seja possível organizar o código em arquivos separados, o tratador de erros precisa ser registrado no app.js e estar na posição correta. Apenas separar em arquivo diferente não resolve o problema de posicionamento.

D

Colocar no mesmo nível não funciona porque middlewares e rotas são processadas sequencialmente. O tratador precisa estar após as rotas, não ao lado delas, para capturar erros que ocorrem durante a execução.

Dica prática: Lembre-se da ordem: middlewares globais → app.use(routes) → tratador de erros. Se você tiver middlewares específicas que precisam rodar apenas em certas rotas, coloque-as dentro dos arquivos de rota, não no app.js principal. No app.js, mantenha a sequência clara e previsível.

Revise pensando: Se você colocar o tratador de erros global antes de app.use(routes), conseguirá capturar um erro lançado dentro de uma rota? Por quê?