2016-12-04 7 views
0

Я сделал API для обновления для своего продукта. Я установил loggly и newrelic для целей мониторинга.NodeJS Восстановить вложенную обещание Обработка ошибок

Недавно 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 restify, но этого будет недостаточно, поскольку запрос был успешно подан и не попал в .catch(next).

Я не хочу, чтобы исправить функцию sendMail. Я просто хочу зарегистрировать, если есть такая ошибка.

Есть ли способ поймать и зарегистрировать этот тип ошибки, не помещая .catch() в функцию sendMail?

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^