ExpressJS - Hata İşleme

Express'te hata işleme, ara yazılım kullanılarak yapılır. Ancak bu ara yazılımın kendine has özellikleri vardır. Hata işleme ara yazılımı, hata işleme işlevleri dışında diğer ara yazılım işlevleriyle aynı şekilde tanımlanır.MUST have four arguments üç yerine - err, req, res, next. Örneğin, herhangi bir hataya yanıt göndermek için kullanabiliriz -

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

Şimdiye kadar rotaların kendisindeki hataları ele alıyorduk. Hata işleme ara yazılımı, hata mantığımızı ayırmamızı ve buna göre yanıtları göndermemizi sağlar. Ara yazılımda tartıştığımız sonraki () yöntem bizi bir sonrakimiddleware/route handler.

Hata işleme için elimizde next(err)işlevi. Bu işleve yapılan bir çağrı, tüm ara katman yazılımlarını atlar ve bizi bu yol için sonraki hata işleyiciyle eşleştirir. Bunu bir örnekle anlayalım.

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

Bu hata işleme ara yazılımı, stratejik olarak rotalardan sonra yerleştirilebilir veya hata türlerini tespit etmek ve istemcilere uygun şekilde yanıt vermek için koşullar içerebilir. Yukarıdaki program aşağıdaki çıktıyı gösterecektir.