处理Javascript承诺中的拒绝错误

时间:2015-11-17 20:29:44

标签: javascript node.js

我有一个Node.js应用程序,并且正在使用一个返回Promise的函数,但在某些情况下它似乎给出了:

Unhandled rejection Error: getaddrinfo ENOTFOUND
    at errnoException (dns.js:37:11)
    at Object.onanswer [as oncomplete] (dns.js:124:16)

我的服务器崩溃了。

这是一个简化的代码,可以在关闭wifi时执行崩溃:

checkip.getExternalIp().then(function (ip) {
  console.log("External IP = "+ip);
});

有没有办法处理这样的事情?

2 个答案:

答案 0 :(得分:3)

你有两个选择。您可以在承诺结束时拨打SSHClient.connect(...,sock)电话,或者您可以向失败案例中运行的.catch提供第二次回电:

.then

checkip.getExternalIp().then(function (ip) {
  console.log("External IP = "+ip);
}).catch(function(err) {
  // handle error here
});

答案 1 :(得分:0)

ES2015承诺遵循the A+ spec。因此,任何承诺都有可能产生可以捕获的错误。因此,要捕获您收到的错误,只需提供catch处理程序:

checkip.getExternalIp()
  .then(then_handler)
  .catch(catch_handler);

更完整的示例位于the documentation