Max*_*ali 11 dns http node.js getaddrinfo
我有一个链接列表,我需要在处理一些数据之前检查.使用http.get检查标头会返回错误:
events.js:72
throw er; // Unhandled 'error' event
^
Error: getaddrinfo ENOTFOUND
at errnoException (dns.js:37:11)
Run Code Online (Sandbox Code Playgroud)
我无法处理此错误,并退出该过程.我尝试了res.on("error")并在http.get上尝试了..catch,但没有任何效果.
下面是代码片段,这是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));
});
}
Run Code Online (Sandbox Code Playgroud)
Pau*_*gel 25
您只需处理该error
事件,如错误消息中所述.根据文件:
如果在请求期间遇到任何错误(使用DNS解析,TCP级别错误或实际的HTTP解析错误),则会在返回的请求对象上发出"错误"事件.
这是一个用法示例:
var getRequest = _http.get(options, function(res) {
// …
});
getRequest.on('error', function (err) {
console.log(err);
});
Run Code Online (Sandbox Code Playgroud)
产量:
$ node test.js
{ [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16005 次 |
最近记录: |