Как поймать ошибку 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 и установил для прослушивателей ошибок кучу свойств запроса, но ни один из них не работал. Как я могу поймать ошибку?
Ответы
Ответ 1
Похоже, что ошибка выбрана из http.Client
, а не запроса. Как насчет чего-то типа:
var site = http.createClient(80, host);
site.on('error', function(err) {
sys.debug('unable to connect to ' + host);
});
var requestToRemote = site.request(...);
FYI, http.createClient
устарел - следует использовать метод get get:
http.get({host: host}, function(res) {
...
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
Ответ 2
вы можете попробовать и разрешить хост с помощью модуля dns перед запуском вашего кода.
http://nodejs.org/docs/latest/api/dns.html#dns.resolve