Chao Wei
Chao Wei

Reputation: 51

node js http server error handling

The following is my code:

const http = require('http');
var server1 = http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2) + '\n' + req.url);
    res.end();
    throw new Error("Error!!!");
});
server1.on("error", err=>console.log(err));
server1.listen(5060);

Why the exception thrown from the callback is not handled by the server1.on("error", ...) and the process is stopped? If such an exception can't be handled by listening on the "error" event, how could I handle such exceptions so that the http server can still run well from the time on?

Upvotes: 5

Views: 8622

Answers (1)

stdob--
stdob--

Reputation: 29172

Use emit instead throw:

const http = require('http');
var server1 = http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2) + '\n' + req.url);
    res.end();
    // throw new Error("Error!!!");
    this.emit('error', new Error("Error!!!"));
});
server1.on("error", err=>console.log(err));
server1.listen(5060);

Upvotes: 5

Related Questions