我已经为我的产品改进了API。我已安装loggly
和newrelic
用于监控目的。
最近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
函数的情况下,是否仍然可以捕获并记录此类错误?