Middleware de erros
Em servidores HTTP reais, como Express.js, as requisições passam por uma cadeia de funções (middlewares) que processam e validam dados antes de enviar a resposta. O tratamento de erros nessa cadeia evita que exceções não capturadas derrubem o servidor, permitindo respostas padronizadas (ex: status 500 e mensagem de erro). Dominar esse padrão é essencial para construir APIs robustas e previsíveis.
O PROBLEMA
Implemente pipeline de middlewares com tratamento de erros Express-like.
EXEMPLO
app.use(autenticar);
app.use(validar);
app.useError((err, req, res, next) => {
res.status = 500;
res.body = err.message;
});SOBRE O CONCEITO
O pipeline de middlewares é implementado com um array de funções. Cada middleware recebe req, res e next. Para diferenciar middlewares de erro, a função deve ter quatro parâmetros: (err, req, res, next). Um erro comum é não chamar next() — sem isso, o fluxo para e a requisição fica pendente. Outro erro é usar três parâmetros no middleware de erro: a engine não o reconhece como manipulador de erro e o erro não será capturado. Para propagar um erro, use next(err) ou lance uma exceção com throw dentro de um try/catch. O middleware de erro só é invocado se houver um erro passado para next() ou lançado. Lembre-se de usar forEach para percorrer o array de middlewares, chamando cada um e tratando exceções com try/catch.
RESOLUÇÃO