gpt4 book ai didi

javascript - Node.js UDP(dgram)处理来自 DNS 解析的错误

转载 作者:搜寻专家 更新时间:2023-10-31 23:49:49 24 4
gpt4 key购买 nike

我正在使用 Node 的内置数据报 UDP 套接字进行简单的 UDP“发送”:

http://nodejs.org/docs/v0.3.1/api/dgram.html

消息的目的地是一个域名,在传输之前必须由 DNS 解析。node.js 会处理这个问题。

如果 DNS 解析失败,dgram 会抛出“ENOTFOUND Domain Not Found”错误并将其传递给我已注册的回调。

我的代码是这样的:

client = dgram.createSocket("udp4");
client.send(message,
0,
message.length,
this.port,
this.address,
function(err, bytes) {
if (err) {
//get rid of error??
}
}
);
client.close();

我对错误不是特别感兴趣.. 如果它失败了,它就失败了,它对应用程序的业务规则并不重要。我会将其记录到控制台以确保完整性。但是我无法阻止此异常返回堆栈并关闭应用程序。我该如何处理这个错误?

我不希望为此放置一个全局未处理的异常处理程序。我已经尝试在 Try/Except 处理程序中的回调中重新抛出错误。这没有用。

有什么想法吗?

感谢阅读。

最佳答案

您需要监听来自套接字的error 事件。如果不这样做, Node 会将其转换为异常。不要尝试用 uncaughtException 来处理这个问题,因为从 uncaughtException 中唯一安全的做法是登录然后退出。

这是一个监听错误并导致故意的 DNS 错误的示例:

var dgram = require('dgram');
var message = new Buffer("Some bytes");
var client = dgram.createSocket("udp4");
client.on("error", function (err) {
console.log("Socket error: " + err);
});
client.send(message, 0, message.length, 41234, "1.2.3.4.5");

这应该打印:

Socket error: Error: ENOTFOUND, Domain name not found

程序会继续运行。

关于javascript - Node.js UDP(dgram)处理来自 DNS 解析的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6475842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com