Dun*_*n_m 4 javascript node.js
我正在使用 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();
Run Code Online (Sandbox Code Playgroud)
我对这个错误不是特别感兴趣。如果它失败了,它就失败了,它对应用程序的业务规则并不重要。为了完整性,我会将其记录到控制台。但是我无法阻止此异常返回堆栈并关闭应用程序。我该如何处理这个错误?
我不想为此设置一个全局的未处理异常处理程序。我尝试在 Try/Except 处理程序中的回调中重新抛出错误......但这不起作用。
有什么想法吗?
谢谢阅读。
您需要监听error来自套接字的事件。如果不这样做,那么节点会将其转换为异常。不要尝试使用 来处理此问题uncaughtException,因为唯一安全的做法uncaughtException是记录然后退出。
error以下是监听并导致故意 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");
Run Code Online (Sandbox Code Playgroud)
这应该打印:
Socket error: Error: ENOTFOUND, Domain name not found
Run Code Online (Sandbox Code Playgroud)
并且程序将继续运行。
| 归档时间: |
|
| 查看次数: |
3809 次 |
| 最近记录: |