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.