Nodejs进程崩溃,没有异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nodejs进程崩溃,没有异常相关的知识,希望对你有一定的参考价值。

当我的nodejs应用程序中发生未捕获的异常时,我会在日志中写入日志条目。

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

但是,今天几次,应用程序崩溃而没有写日志条目。

在处理类似请求时,应用程序都崩溃了两次,所以它主要应该归因于应用程序的某些问题,而不是因为有人杀了它或其他一些外部因素。

那么,有没有任何方式应用程序崩溃而不给出未捕获的异常?

答案

我建议你添加unhandledRejection。正如提到的Node.js文档,

每当Promise被拒绝时都会发出unhandledRejection事件,并且在事件循环的转弯中没有错误处理程序附加到promise。使用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()`

以上是关于Nodejs进程崩溃,没有异常的主要内容,如果未能解决你的问题,请参考以下文章

拿什么守护你的Node.JS进程: Node出错崩溃了怎么办?

Android 应用程序不断因空指针异常而崩溃

我的应用程序不断崩溃(致命异常)

是否可以防止子 AppDomain 中的未处理异常导致主进程崩溃?

对话框片段已添加异常未抛出

片段在重新加载时崩溃