Node.js HTTP服务器错误处理

5
以下是我的代码:
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);

为什么从回调函数抛出的异常没有被server1.on("error", ...)处理,并且进程停止了? 如果无法通过监听"error"事件来处理这样的异常,我该如何处理这些异常,以便http服务器仍然可以正常运行?

3
server1.on 中的 error 指的是服务器发出的 error 事件,而不是你代码中所抛出的 Error 对象。要处理抛出的错误,你需要使用 try-catch - Soubhik Mondal
1个回答

5
请使用emit而不是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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接