NodeJS Restify嵌套Promise错误处理

时间:2016-12-04 21:10:01

标签: express restify

我已经为我的产品改进了API。我已安装logglynewrelic用于监控目的。

最近newrelic通知我,我的代码中某处出现了错误。

app.get('/myroute', (req, res, next) => {
   let payload = { /*...*/ };

   return new Promise((resolve, reject) => {
     /* some code */
     return resolve();
   })
     .then(/* some promise */)
     .then(() => {
         /* some code */

         sendEmail({params}); // some error was thrown from one of the promise chain
                              // inside this function...

         return something;
     })
     .then(/* some promise */)
     .then(() => {
       res.send(something);
     })
     .catch(next);
});

承诺链解决得非常好,用户得到了正确的响应,因为我没有返回 sendEmail函数。而且我不想,因为我不希望用户长时间等待响应。

function sendMail(params) {
    return new Promise((resolve, reject) => {
      /* some code */
      return resolve();
    })
      .then(() => {
        params.abc.replace('a', 'b'); // error thrown, cannot find replace of undefined.
        return something;
      });
}

newrelic发现错误,但loggly没有。我已经完成了formatters设置,但由于请求成功投放并且没有落入.catch(next),它已经不够了。

我不想要解决方案来修复sendMail功能。如果有这样的错误,我只想记录。

在没有.catch()sendMail函数的情况下,是否仍然可以捕获并记录此类错误?

0 个答案:

没有答案