【问题标题】:node js http server error handling节点js http服务器错误处理
【发布时间】:2016-06-12 18:59:15
【问题描述】:

以下是我的代码:

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 服务器从那时起仍然可以正常运行?

【问题讨论】:

  • server1.on 中的 error 是指服务器发出的 error 事件,而不是像您的情况那样抛出的错误对象。要处理抛出的错误,您需要try-catch

标签: javascript node.js http server


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 2017-05-31
    • 1970-01-01
    • 2023-03-10
    • 2018-02-03
    • 2022-12-10
    • 1970-01-01
    相关资源
    最近更新 更多