javascript - Node js http服务器错误处理

标签 javascript node.js http server

以下是我的代码:

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

最佳答案

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

关于javascript - Node js http服务器错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35704617/

相关文章:

node.js - 将windows1252转换为NodeJS特殊字符中的utf-8

java - 在 Node js 中通过 AES/GCM/NoPadding 算法使用 key 和 iv 加密有效负载并在 java 中解密

javascript - 如何使用 express js 创建一个简单的 html 服务器

javascript - 如何将三元实现为点击处理程序

javascript - 改变颜色的菜单选项卡,但保持代码简单

javascript - Bootstrap 模式按钮没有响应

node.js - axios 不能使用,而 fetch 可以

http - 在客户端请求没有 Accept header 的情况下发送 406 是否有效 HTTP

angularjs - 如何等待 Angular2 处理动态多个 Http 请求?

http - 服务器端Dart中的跨域请求