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.