ExpressJS - obsługa błędów

Obsługa błędów w Express odbywa się za pomocą oprogramowania pośredniego. Ale to oprogramowanie pośredniczące ma specjalne właściwości. Oprogramowanie pośredniczące do obsługi błędów jest definiowane w taki sam sposób, jak inne funkcje oprogramowania pośredniego, z wyjątkiem funkcji obsługi błędówMUST have four arguments zamiast trzech - err, req, res, next. Na przykład, aby wysłać odpowiedź na dowolny błąd, możemy użyć -

app.use(function(err, req, res, next) {
   console.error(err.stack);
   res.status(500).send('Something broke!');
});

Do tej pory zajmowaliśmy się błędami w samych trasach. Oprogramowanie pośredniczące do obsługi błędów pozwala nam oddzielić logikę błędów i odpowiednio wysyłać odpowiedzi. Metoda next (), którą omówiliśmy w oprogramowaniu pośrednim, prowadzi nas do następnejmiddleware/route handler.

Do obsługi błędów mamy rozszerzenie next(err)funkcjonować. Wywołanie tej funkcji pomija całe oprogramowanie pośredniczące i dopasowuje nas do następnego programu obsługi błędów dla tej trasy. Zrozummy to na przykładzie.

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);

To oprogramowanie pośredniczące do obsługi błędów może być strategicznie rozmieszczone po trasach lub zawierać warunki do wykrywania typów błędów i odpowiedniego reagowania na klientów. Powyższy program wyświetli następujące dane wyjściowe.