gpt4 book ai didi

node.js - 如何捕获 getaddrinfo ENOTFOUND

转载 作者:IT老高 更新时间:2023-10-28 23:14:10 27 4
gpt4 key购买 nike

我有一个链接列表,在处理一些数据之前我需要检查这些链接。使用 http.get 检查 header 返回错误:

events.js:72   
throw er; // Unhandled 'error' event
^
Error: getaddrinfo ENOTFOUND
at errnoException (dns.js:37:11)

我无法处理此错误,并退出该过程。我尝试了 res.on("error") 并尝试在 http.get 上尝试..catch,但没有任何效果。

下面是代码片段,here is live example at runnable.com

//This is OK
getHeaders('http://google.com/404pag-that-does-not-exit');


//Here is the error.
//Uncoughtable error!
getHeaders('http://doesnotexistooooo.com');

function getHeaders(link){
var _http = require("http");
var myUrl = require("url");

var qs=(myUrl.parse(link).search==null) ? "" : myUrl.parse(link).search ;
var path=myUrl.parse(link).pathname;

var options = {
hostname: myUrl.parse(link).hostname,
path: path+qs,
method: 'HEAD'
};
_http.get(options, function(res) {
res.on('error',function(e){
console.log("Error: " + myUrl.parse(link).hostname + "\n" + e.message);
console.log( e.stack );
});
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
});

}

最佳答案

您只需要处理 error 事件,如错误消息中所述。根据the documentation :

If any error is encountered during the request (be that with DNS resolution, TCP level errors, or actual HTTP parse errors) an 'error' event is emitted on the returned request object.

这是一个用法示例:

var getRequest = _http.get(options, function(res) {
// …
});
getRequest.on('error', function (err) {
console.log(err);
});

产生:

$ node test.js
{ [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' }

关于node.js - 如何捕获 getaddrinfo ENOTFOUND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21662619/

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