当我尝试使用http
模块访问不存在的主机时,如下所示:
requestToRemote = http.createClient(80, 'fjasdfhasdkfj.vvvxcz').request(
method,
path,
headers
);
但是我收到以下错误:
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: getaddrinfo ENOENT
at errnoException (dns.js:31:11)
at Object.onanswer [as oncomplete] (dns.js:140:16)
我想抓住这个错误,所以我尝试了try / catch并设置了一堆请求属性的错误监听器,但是没有一个工作。我怎样才能发现错误?
答案 0 :(得分:14)
看起来错误是从http.Client
引发的,而不是请求。怎么样:
var site = http.createClient(80, host);
site.on('error', function(err) {
sys.debug('unable to connect to ' + host);
});
var requestToRemote = site.request(...);
仅供参考,http.createClient
已被弃用 - 以下内容应使用get方法:
http.get({host: host}, function(res) {
...
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
答案 1 :(得分:-1)
您可以在运行代码之前尝试使用dns模块解析主机。