ExpressJS - Tratamento de Erros
O tratamento de erros no Express é feito usando middleware. Mas esse middleware tem propriedades especiais. O middleware de tratamento de erros é definido da mesma maneira que outras funções de middleware, exceto que as funções de tratamento de errosMUST have four arguments em vez de três - err, req, res, next. Por exemplo, para enviar uma resposta sobre qualquer erro, podemos usar -
app.use(function(err, req, res, next) {
console.error(err.stack);
res.status(500).send('Something broke!');
});
Até agora estávamos lidando com erros nas próprias rotas. O middleware de tratamento de erros nos permite separar nossa lógica de erro e enviar respostas de acordo. O método next () que discutimos no middleware nos leva ao próximomiddleware/route handler.
Para tratamento de erros, temos o next(err)função. Uma chamada para essa função ignora todo o middleware e nos corresponde ao próximo manipulador de erros para essa rota. Vamos entender isso por meio de um exemplo.
var express = require('express');
var app = express();
app.get('/', function(req, res){
//Create an error and pass it to the next function
var err = new Error("Something went wrong");
next(err);
});
/*
* other route handlers and middleware here
* ....
*/
//An error handling middleware
app.use(function(err, req, res, next) {
res.status(500);
res.send("Oops, something went wrong.")
});
app.listen(3000);
Este middleware de tratamento de erros pode ser colocado estrategicamente após as rotas ou conter condições para detectar tipos de erros e responder aos clientes de acordo. O programa acima exibirá a seguinte saída.