Процесс Nodejs аварийно завершился - PullRequest
0 голосов
/ 01 декабря 2018

Я записываю запись в журнал, когда в моем приложении nodejs возникло неперехваченное исключение.

process.on('uncaughtException', function (err) {
    log.warn('Caught exception. Exiting. error: ' + err + ", stack: " + err.stack);
    process.exit(1);
});

Но пару раз сегодня приложение не работало без записи в журнале.

Оба раза происходит сбой приложения при обработке аналогичного запроса, поэтому в основном это должно быть связано с какой-то проблемой приложения, а не из-за того, что кто-то его убил или из-за какого-то другого внешнего фактора.

Итак, есть ликаким образом приложение могло аварийно завершить работу, не выдавая необработанное исключение?

1 Ответ

0 голосов
/ 01 декабря 2018

Я предлагаю вам также добавить unhandledRejection.Как упоминается в документации Node.js ,

Событие unhandledRejection генерируется всякий раз, когда обещание отклоняется, и обработчик ошибок не присоединяется к обещанию в течение ходацикл событий.При программировании с Promises исключения инкапсулируются как «отклоненные обещания».Отклонения могут быть обнаружены и обработаны с помощью promise.catch() и распространяются через цепочку Promise.Событие unhandledRejection полезно для обнаружения и отслеживания отклоненных обещаний, отклонения которых еще не были обработаны.

Вот пример того, как использовать его, предоставленный Node.js снова:

process.on('unhandledRejection', (reason, p) => {
  console.log('Unhandled Rejection at:', p, 'reason:', reason);
  // application specific logging, throwing an error, or other logic here
});

somePromise.then((res) => {
  return reportToUser(JSON.pasre(res)); // note the typo (`pasre`)
}); // no `.catch()` or `.then()`
...