如何捕捉不存在的主机上的node.js http错误?

当我试图使用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和设置一堆请求属性的错误侦听器,但没有任何工作。 我怎样才能捕捉到错误?

看起来像从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已被弃用 – 以下应使用获得方便的方法:

 http.get({host: host}, function(res) { ... }).on('error', function(e) { console.log("Got error: " + e.message); }); 

你可以在运行代码之前尝试使用dns模块来parsing主机。

http://nodejs.org/docs/latest/api/dns.html#dns.resolve