Friday, February 17, 2017

ExpressJS - Error Handling

Error handling in Express is done using middleware. But this middleware has special properties. The error handling middleware are Defined in the same way as other middleware functions, except error-handling functions MUST have four arguments instead of three: (err, req, res, next). For example, to send a response on any error, we can use:

app.use(function(err, req, res, next) {
    console.error(err.stack);
    res.status(500).send('Something broke!');
});
Till now we were handling errors in the routes itself. These error handling middleware allow us to seperate out our error logic and send responses accordingly. The next() method we discussed in middleware took us to next middleware/route handler.
For error handling, we have a function next(err). A call to this function skips all middleware and matches us to the next error handler for that route. For example,
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);
These error handling middleware can be strategically placed after routes or contain conditions to detect error types and respond to the clients accordingly. An example of the above is:
Error handling There is not much of how to with error handling in Express. You need to figure out how you'll use Express' error handling mechanism.

No comments:

Post a Comment