回复
JavaScript错误处理指南之Node.js
footballboy
发布于 2021-4-6 09:41
浏览
0收藏
Node.js 中的异步错误处理:事件发射器
你在 Node.js 中所做的大部分工作都是基于 事件 的。大多数情况下,你会与 发射器对象 和一些观察者交互以侦听消息。
Node.js 中的任何事件驱动模块(例如 net,https://nodejs.org/dist/latest-v14.x/docs/api/net.html)都扩展了一个名为 EventEmitter 的根类。
Node.js 中的 EventEmitter 有两种基本方法:on 和 emit。
考虑以下简单的 HTTP 服务器:
const net = require("net");
const server = net.createServer().listen(8081, "127.0.0.1");
server.on("listening", function () {
console.log("Server listening!");
});
server.on("connection", function (socket) {
console.log("Client connected!");
socket.end("Hello client!");
});
在这里我们监听两个事件:listening 和 connection。除了这些事件之外,事件发射器还在出现错误时公开一个 错误 事件。
如果你在端口 80 上运行此代码,则会得到一个异常:
const net = require("net");
const server = net.createServer().listen(80, "127.0.0.1");
server.on("listening", function () {
console.log("Server listening!");
});
server.on("connection", function (socket) {
console.log("Client connected!");
socket.end("Hello client!");
});
输出:
events.js:291
throw er; // Unhandled 'error' event
^
Error: listen EACCES: permission denied 127.0.0.1:80
Emitted 'error' event on Server instance at: ...
要捕获它,我们可以注册一个 错误 事件处理器:
server.on("error", function(error) {
console.error(error.message);
});
这会打印:
listen EACCES: permission denied 127.0.0.1:80
此外,该程序不会崩溃。要了解有关该主题的更多信息,请参考“Node.js 中的错误处理”。
https://www.joyent.com/node-js/production/design/errors
分类
已于2021-4-6 09:41:35修改
赞
收藏
回复
相关推荐