~/questoes/programacao
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.
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.
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.
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.
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.
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.