ExpressJS - Gestione degli errori
La gestione degli errori in Express viene eseguita utilizzando il middleware. Ma questo middleware ha proprietà speciali. Il middleware di gestione degli errori è definito allo stesso modo delle altre funzioni middleware, ad eccezione delle funzioni di gestione degli erroriMUST have four arguments invece di tre - err, req, res, next. Ad esempio, per inviare una risposta a qualsiasi errore, possiamo utilizzare -
app.use(function(err, req, res, next) {
console.error(err.stack);
res.status(500).send('Something broke!');
});
Fino ad ora gestivamo gli errori nelle rotte stesse. Il middleware di gestione degli errori ci consente di separare la nostra logica di errore e inviare risposte di conseguenza. Il metodo next () di cui abbiamo discusso nel middleware ci porta al prossimomiddleware/route handler.
Per la gestione degli errori, abbiamo l'estensione next(err)funzione. Una chiamata a questa funzione salta tutto il middleware e ci associa al successivo gestore degli errori per quella route. Cerchiamo di capirlo attraverso un esempio.
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);
Questo middleware di gestione degli errori può essere posizionato strategicamente dopo le route o contenere condizioni per rilevare i tipi di errore e rispondere di conseguenza ai client. Il programma precedente mostrerà il seguente output.