求助,如何捕获 Error: connect ETIMEOUT 等导致进程直接结束的错误?
发布于 9 年前 作者 xiongliding 5536 次浏览 最后一次编辑是 5 年前

在用 https.get 访问其他服务器时超时,结果出现 Error: connect ETIMEOUT ,并且进程终止。

请问这类错误该如何捕获?

我尝试了

https.get(options, function(res){
  ...
  res.on('error', function(e){
    ...       
  });
});

try {
  https.get(options, function(res){
    ...
  });
} catch (e) {
  ...
}

都不能阻止报错,是我方法不当么?还有什么解决方法?

3 回复

……自问自答了,文档没看清楚,.on('error' ...) 要加在外面。

https.get(options, function(res){
  ...
}).on('error', function(e){
  ...       
});

Error: connect ETIMEOUT 原因是对方地址不存在。

嗯,我那次的原因是 DNS 缓存,我在电信的网络开了个虚拟机,然后休眠,在一个移动的网络环境里唤醒,结果就访问超时了,搞了好久才发现问题出在这里。

回到顶部