Node.js事件循环异常处理

Node js event loop Exception handling

这是关于如何在节点 js 中处理异常的查询。

假设有一个节点 + 快速 Web 服务器。正如我们所知,它在单个线程中处理多个请求 - 服务一个请求,而另一个请求正在等待 IO。

假设在处理请求时会发生未处理的异常。

  1. 在上面的场景中,挂起的请求不会因为崩溃而被丢弃吗?
  2. 如果是,是否有明确定义的机制来克服这个问题?
  1. 是的
  2. 您可以在 process 上收听此类错误并避免崩溃:

    process.on('unhandledRejection', (理由, 承诺) => { console.log(原因+“--”+承诺); });

    process.on('uncaughtException', (err) => { console.error("uncaught exception:" + err + "\n" + err.stack); });

    process.on('error',(错误)=>{ console.log('caught in app error listener: ' + 错误); });

请注意,覆盖此类侦听器不是最佳做法,因为您可能会在代码中遇到不可预测的行为。 您应该始终在本地方法中处理错误(处理错误回调、检查正确的类型、使用 try...catch、使用 .catch 等...)