如何捕捉不存在的主机上的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主机。